我关注这个问题: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:
最佳答案
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/