java - 如何从 java.util.date 转换为 JodaTime 并获得相同的日期

标签 java datetime jodatime

我关注这个问题:Convert from java.util.date to JodaTime

我有日期:Sun Jan 01 00:00:00 CET 1854 现在我想将它转换为 joda 日期时间:

DateTime dateTime = new DateTime(date);

现在当我打印这个日期时,我得到了: 1853-12-31T23:57:44.000+00:57:44

怎么了,为什么我的日期变了?我怎样才能得到相同的日期?

更新:

我使用日历获取日期:

Calendar cal1 = Calendar.getInstance();
cal1.set(1854, 0, 1, 0, 0, 0);
cal1.getTime()

更新 2:

可能是毫秒有问题:

    Calendar cal1 = Calendar.getInstance();
    cal1.set(1854, 0, 1, 0, 0, 0);
    DateTime start = new DateTime(1854, 1, 1, 0, 0, 0);
    System.out.println(start.getMillis());
    System.out.println(cal1.getTime().getTime());

因为这段代码返回:

-3660598664000
-3660598799438

但我不知道为什么

更新 3:

enter image description here

最佳答案

Joda-Time 使用准确的时区数据库,其中有 Local Mean Time (LMT)在时区开始之前多年。引用维基百科:

Local mean time is a form of solar time that corrects the variations of local apparent time, forming a uniform time scale at a specific longitude.

JDK 不使用 LMT,因此时间不同。

关于java - 如何从 java.util.date 转换为 JodaTime 并获得相同的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383287/

相关文章:

java - 用Java获取两个工作日之间的分钟数

java - 给定一个位数组,如何在位 Trie 中找到最近的签名?

java - 为什么该方法会更改传递的数组的值

Java 同步 : Synchronization method and synchronization block

datetime - 为什么在修补/保存时日期/时间值解释不正确?

java - 使用 JodaTime 对每个时间间隔进行计数

java - BigInteger 开关盒

java - 日期时间转换为日期时显示不同的日期

c# - 如何从 DateTime 和 TimeSpan 类型创建 DateTime 对象?

java - 从其他两个日期创建日期时间