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);

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と同じ結果をもたらします。

なぜその違いがあるのか​​説明してください。

4

1 に答える 1

4

timeanddate.comによると、クアラルンプールでは 1901 年、1905 年、1933 年、1941 年、1942 年、1945 年にタイムゾーンの調整が行われました。これらの合計が、おそらくあなたが目にしている不一致を説明しています。

編集: 実際、すべての調整を合計すると、43:14 になります。これは、まさにあなたが見ている不一致です。

JodaTime と Java は正しい数値を示しています。

于 2012-05-28T04:41:44.793 に答える