2011-05-24 77 views
3
import org.joda.time.LocalDateTime; 
import java.util.Date; 

随着这个日期或以下的人这一切都OK:问题转化java.util.Date到org.joda.time.LocalDateTime

  • 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

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

+2

FWIW,那些'Date()'构造函数[已弃用](http://download.oracle.com/javase/6/docs/api/java/util/Date.html)。您是否使用用[日历](http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html)创建的日期来尝试相同的示例? – 2011-05-24 15:54:59

+0

此构造函数仅用于简化。其他'日期'也是一样的。 – 2011-05-24 16:22:22

回答

3

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

您可以在链接到的网站上查看您的时区以了解更改。