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

hud*_*udi 5 java datetime jodatime

我遵循这个问题:从java.util.date转换为JodaTime

我有约会:Sun Jan 01 00:00:00 CET 1854现在我想把它转换为joda datetime:

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()
Run Code Online (Sandbox Code Playgroud)

UPDATE2:

可能有毫秒问题:

    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());
Run Code Online (Sandbox Code Playgroud)

因为这段代码返回:

-3660598664000
-3660598799438
Run Code Online (Sandbox Code Playgroud)

但我不知道为什么

UPDATE3:

在此输入图像描述

Jod*_*hen 7

Joda-Time使用准确的时区数据库,该数据库在时区开始之前具有多年的本地平均时间(LMT).引用维基百科:

局部平均时间是太阳时的一种形式,它校正局部表观时间的变化,在特定经度上形成统一的时间尺度.

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


hud*_*udi 4

好吧,我解决了。不太好,但重要的是它有效

  Calendar calendar = Calendar.getInstance();
    calendar.setTime(datum);

    DateTime current = new DateTime(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1,
            calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)