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:

Joda-Time使用准确的时区数据库,该数据库在时区开始之前具有多年的本地平均时间(LMT).引用维基百科:
局部平均时间是太阳时的一种形式,它校正局部表观时间的变化,在特定经度上形成统一的时间尺度.
JDK不使用LMT,因此时间不同.
好吧,我解决了。不太好,但重要的是它有效
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)
| 归档时间: |
|
| 查看次数: |
4356 次 |
| 最近记录: |