3
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

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

4

1 回答 1

3

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

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

于 2011-05-24T16:04:42.393 回答