9

Joda Timeを使用してローカル日付を UTC に変換しようとしています。私が使用したコードを以下に示しますが、うまく機能します。

Date localDate = new Date();
System.out.println("Local Date : " + localDate);

DateTimeZone tz = DateTimeZone.getDefault();
Date utcDate = new Date(tz.convertLocalToUTC(localDate.getTime(), false));
System.out.println("UTC Date : " + utcDate);

Output :  
Local Date : Wed May 29 11:54:46 EEST 2013
UTC Date : Wed May 29 08:54:46 EEST 2013

しかし、UTC Date をDateTimeZone.convertLocalToUTC()メソッドにパラメーターとして送信すると、時間も 3 減少します。これはバグですか、それとも何か不足していますか?

Date localDate = new Date();
System.out.println("Local Date : " + localDate);

DateTimeZone tz = DateTimeZone.getDefault();
Date utcDate = new Date(tz.convertLocalToUTC(localDate.getTime(), false));
System.out.println("UTC Date : " + utcDate);

Date utcDate2 = new Date(tz.convertLocalToUTC(utcDate.getTime(), false));
System.out.println("UTC Date 2 : " + utcDate2);

Output : 
Local Date : Wed May 29 11:54:46 EEST 2013
UTC Date : Wed May 29 08:54:46 EEST 2013
UTC Date 2 : Wed May 29 05:54:46 EEST 2013
4

2 に答える 2

6

のjavadocによるとconvertLocalToUTC

ローカル インスタントを同じローカル時間の標準 UTC インスタントに変換します。この変換は、単純なローカル ゾーンを使用して計算が行われた場合に計算を実行した後に使用されます。

メソッドは、渡された日付が含まれているかどうかについての仮定や検証をUTC行わず、常に渡された日付をローカルと見なし、に変換しUTCます。プログラムの出力は正しいです。

于 2013-05-29T09:20:56.913 に答える
2

convertLocalToUTC()メソッドの観点から見てみましょう。と が必要longですboolean。それはあなたが過ぎ去った時間が過ぎているかどうかについての知識を持っていませUTCん。long現地時間である a を渡していると想定し、それに応じて調整します。

于 2013-05-29T09:16:20.603 に答える