将java.util.Date转换为org.joda.time.LocalDateTime时出现问题

时间:2011-05-24 15:52:03

标签: java jodatime java.util.date

import org.joda.time.LocalDateTime;
import java.util.Date;

使用此日期或以下日期,一切正常:

  • new LocalDateTime(new Date(0,0,1,2,30)) - 1900-01-01T02:30:00.000
  • new LocalDateTime(new Date(111,4,24,19,51)) - 2011-05-24T19:51:00.000

但是前面的日期有一些不可理解的东西:

  • new LocalDateTime(new Date(0,0,1,2,29,50)) - 1900-01-01T01:59:50.000
  • new LocalDateTime(new Date(0,0,1)) - 1899-12-31T23:30:00.000
  • new LocalDateTime(new Date(-50,0,1)) - 1849-12-31T23:30:20.000
  • new LocalDateTime(new Date(-116,6,4)) - 1784-07-03T23:30:20.000

谁知道,这是什么,以及如何防止这个问题?

1 个答案:

答案 0 :(得分:3)

您使用的是哪个时区?看起来你正在处理一个clock discontinuity,可能是在1900年1月1日凌晨2点左右。这意味着本地时钟跳过了一定的时间,正式不存在。它也可能是DST的变化。最后3行的一致差异看起来很奇怪 - 也许Java的Calendar和Joda Time使用不同版本的时区数据库,其中一个版本缺少更改。

您可以检查您的时区是否有链接到站点的更改。