2011-10-18 16 views
1

異なるタイムゾーンで有効な日付文字列を次のように変換しました:UTCJoda-Timeを使用して別のタイムゾーンの文字列をUTCに変換するには

String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; 
DateTimeFormatter DATETIME_FORMATTER = DateTimeFormat.forPattern(DATE_FORMAT); 
DateTimeZone dateTimeZone = DateTimeZone.forID("-03:00"); 
//date is 2000-01-01 00:00:00 -03:00 
DateTime date = DATETIME_FORMATTER.withZone(dateTimeZone).parseDateTime("2000-01-01 00:00:00")); 
System.out.println("Current date is: " + date.toString()); 
//now convert to UTC 
DateTime convertedDate = date.toDateTime(DateTimeZone.UTC); 
System.out.println("Converted date: " + date.toString()); 

結果は

Current date is: 2000-01-01T00:00:00.000-03:00 
Converted date: 2000-01-01T03:00:00.000Z 

これを行うの短い/より良い方法はありますか?私は最後の日付をJoda-TimeDateTimeオブジェクトにします。

答えて

0

DateTimeのタイムゾーンは、withZone()を使用して変換できます。入力文字列にタイムゾーンオフセットが指定されていない場合は、コードを追加する必要があるため、コードはかなり最適です。

0

サンプルコードより1つ上の改善点は、ハードコードされた「-3:00」オフセットをタイムゾーン名に置き換えることです。これにより、Joda-Timeは任意のDaylight Saving Time(DST)の調整を行うことができます。 doc:DateTimeZone.forID()を参照してください。

この:

DateTimeZone dateTimeZone = DateTimeZone.forID("-03:00"); 

タイムゾーンのリスト(おそらく時代遅れ、ノートを読んで)::
http://joda-time.sourceforge.net/timezones.html

これに代えて

DateTimeZone dateTimeZone = DateTimeZone.forID("America/Sao_Paulo"); 

関連する問題