繁体   English   中英

DateTime给出了意想不到的结果

[英]DateTime is giving unexpected result

我用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相同的结果。

有人请解释为什么会有这种差异?

根据timeanddate.com ,吉隆坡在1901年,1905年,1933年,1941年,1942年,1945年进行了时区调整,总和可能解释了你所看到的差异。

编辑:事实上,如果你把所有调整加起来你得到43:14,这正是你所看到的差异。

JodaTime和Java正在为您提供正确的数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM