java - 如何使用 Java 8 将 java.sql.Date 转换为 Days 以及将 Days 转换为 UTC 中的 java.sql.Date?

标签 java

我正在尝试将 java.sql.Date 转换为天数,并将天数转换回 java.sql.Date ,全部采用 UTC,但我相信我已经休息了一天。

我尝试过,我的 millis1millis2 关闭了一天。

import java.sql.Date;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.concurrent.TimeUnit;

public class TestDate {
    public static void main(String... args) {
        String str="2015-03-31";
        Date date=Date.valueOf(str);
        long millis1 = date.getTime();
        System.out.println(millis1);
        int days = getDaysFromDate(date);
        long millis2 = getDateFromDays(days).getTime();
        System.out.println(millis2);
    }

    public static int getDaysFromDate(Date date) {
        return (int)ChronoUnit.DAYS.between(Instant.EPOCH, Instant.ofEpochMilli(date.getTime()));
    }

    public static Date getDateFromDays(int daysSinceEpoch) {
        return new Date(TimeUnit.DAYS.toMillis(daysSinceEpoch));
    }
}

最佳答案

当从毫秒转换为天,然后从天转换回毫秒时,您将丢失数据。

在您的情况下,millis1millis2 都等于相同数量的 DAYS (16525),但 millis2 在方法调用后的毫秒数会更少,因为它没有考虑不计为 DAY 的额外小时数。额外的工作时间很可能来自闰年。 使用 ChronoUnit.DAYS 时,日期应等于中午。

关于java - 如何使用 Java 8 将 java.sql.Date 转换为 Days 以及将 Days 转换为 UTC 中的 java.sql.Date?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52621511/

相关文章:

java - Android AccountManager 抛出 AuthenticatorException : bind failure when adding account

java - Spring 4 - MVC - URL参数和静态资源路径

java - 在 Spring 服务类的所有实例之间共享一个 hashmap 实例

java - 多个运行者的junit实现

java - 如何摆脱每个方法中的 try/catch 方法

java - Java 中的代码注入(inject)/程序集内联?

java - 如何在 Java 中将 JavaScript 日期转换为日期?

具有已知池大小但未知工作人员的 Java- FixedThreadPool

java - 打印优先队列的内容

java - SOAP 属性总是以相同的顺序出现吗?