タイムゾーンオーストラリア/メルボルンのJava 8での日付、時間の日ライトセービング問題

user3405294:

私は一日光セーブ開始と終了のために異なる結果を取得しています。

ZoneId zone = ZoneId.of("Australia/Melbourne");
System.out.println(ZonedDateTime.of(2019, 04, 07, 3, 0, 0, 0, zone)); // statement-1
System.out.println(ZonedDateTime.of(2019, 10, 06, 2, 0, 0, 0, zone)); // statement-2

今年2019年のための日光省の前半については、私は(:00 ** + 10時00分** [オーストラリア/メルボルン] 2019-04-07T03)として結果を取得しています。Javaは値を相殺するために1時間を減らしています。しかし、日軽省(文2 => 2019-10-06Tの後半03:00 + 11:00 [オーストラリア/メルボルン])、Javaは値を相殺するために、時間と+1に1時間を追加しています。

DSTの開始はその後、javaはオフセット値から1を時間から1時間を減少させなければならないしながら、私の理解のjavaあたりとして値(DSTの終わり)とを相殺するために1時間の時間と+1を増やす必要があります。

差異に関する説明を取得するために私を助けてください。これは、Java 8の問題であるか、私の理解が間違っていますか?

ジョニ:

見てみると、オーストラリア/メルボルンのためのDSTの移行、クロックがあるためDSTの変更の2019年10月6日02:00なかったです。これは、DSTがどのように働くかある:01後:59:59.999999クロックは03にジャンプ:00:00.000000。

これは、に記載されてZonedDateTime.ofのJavaDoc

クロックが前方にジャンプするときのギャップの場合に、オフセット有効なありません。代わりに、ローカル日時はギャップの長さによって、後に調整されます。代表的なものの時間夏時間の変更については、現地日時は「夏」に対応し、通常のオフセットに1時間後に移動されます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=372674&siteId=1
おすすめ