我尝试使用Jodatime DateTime
,
DateTime dateTime = DateTime
.parse("1-JAN-1900", DateTimeFormat.forPattern("dd-MMM-yyyy"))
.plusSeconds(2075866000);
String dateTimeStr = DateTimeFormat.forPattern(
"yyyy/MM/dd HH:mm:ss").print(dateTime);
System.out.println(dateTimeStr);
我也尝试过使用Jodatime MutableDateTime
MutableDateTime dateTime = MutableDateTime
.parse("1-JAN-1900", DateTimeFormat.forPattern("dd-MMM-yyyy"));
dateTime.add(DurationFieldType.seconds(), 2075866000);
String dateTimeStr = DateTimeFormat.forPattern(
"yyyy/MM/dd HH:mm:ss").print(dateTime.toDateTime());
System.out.println(dateTimeStr);
两者都给了我相同的结果,1965/10/13 06:09:54
。
我希望,1965/10/13 05:26:40
。我是使用下面给出的Oracle查询得到的,
select to_date('1900-JAN-1') + 2075866000/86400 from dual
由于Joda和Oracle之间的矛盾,我尝试了Wolframalpha,这也给了我与Oracle相同的结果。
任何人都可以解释为什么会有这种差异?
答案 0 :(得分:4)
根据timeanddate.com,吉隆坡在1901年,1905年,1933年,1941年,1942年,1945年进行了时区调整,其总和可能解释了你所看到的差异。
编辑:事实上,如果你把你得到的所有调整加起来是43:14,这正是你所看到的差异。
JodaTime和Java正在为您提供正确的数字。