6

我已经尝试过使用 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);

我也尝试过使用 JodatimeMutableDateTime

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

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

4

1 回答 1

4

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

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

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

于 2012-05-28T04:41:44.793 回答