我已经使用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为您提供正确的数字。

10-07 22:19