0

8601 の日時変換については、このSO の回答に従いました。

w3 から直接例を引用します。

1994-11-05T08:15:30-05:00 corresponds to November 5, 1994, 8:15:30 am, US Eastern Standard Time.

1994-11-05T13:15:30Z corresponds to the same instant.

そして、これは私がAndroidで実行するものです

SimpleDateFormat sdfSource = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");
dateTime = sdfSource.parse("2014-03-06T11:30:00-05:00");
System.out.println(dateTime); //Thu Mar 06 18:30:00 EET 2014

明らかに.parse()の出力は、ローカル対応の日時です。私はこのタイムゾーンにいるので、(-05:00 ) からEST(+02:00) への変換がありました。EETただし、この自動変換は必要ありません。

yyyy-MM-dd'T'HH:mm:ssZZZZZ日時文字列を形式で解析し、そのタイムゾーンの日時を表示する方法はありますか? 望ましい出力:

Thu Mar 06 11:30:00 EST 2014

と私のEST場所は一例です。他のタイムゾーンでもかまいません。

4

3 に答える 3

0

sdfSource.setTimeZone() メソッドを使用する

SimpleDateFormat sdfSource = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");
sdfSource.setTimeZone(TimeZone.getTimeZone("EST")); //give the timezone you want
dateTime = sdfSource.parse("2014-03-06T11:30:00-05:00");
System.out.println(dateTime); //Thu Mar 06 18:30:00 EET 2014

これでうまくいくはずです。

于 2014-03-06T10:19:27.847 に答える
0

日付の解析中に心配する必要はありませんが、正しい値に解析されるため、必要な形式またはタイムゾーンで表示できます。

SimpleDateFormat sdfSource = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");
sdfSource.setTimeZone( TimeZone.getTimeZone( "EST" ) );
dateTime = sdfSource.parse("2014-03-06T11:30:00-05:00");
System.out.println(sdfSource.format(dateTime)); //Thu Mar 06 18:30:00 EET 2014
于 2014-03-06T10:16:36.327 に答える