3

次の形式の日付オブジェクトがあります。

2013年1月20日日曜日10:12:27GMT+ 02:00

上記の時間は、MicrosoftOutlookに正しく​​表示されます。

2013年1月20日日曜日12:12PM(これはGMT + 2 >>クライアントタイムゾーンの時間です)

SimpleDateFormat次のコードを使用して、Outlookのように表示されるように日付オブジェクトをフォーマットしようとした場合:

SimpleDateFormat sdf=new SimpleDateFormat(
    "EEE M/d/yyyy hh:mm a");
    String receivedDate = sdf.format(email.getDateTimeReceived());

フォーマットの結果は次のとおりです。

2013年1月20日日曜日10:12AM

したがって、2時間のタイムゾーンの違いが欠落しています。

それを修正する方法を教えてください、ありがとう。

4

2 に答える 2

4

私が正しく理解している場合は、GMTタイムゾーンを使用して日付をフォーマットする必要があります。

DateFormat dateFormat = new SimpleDateFormat("EEE M/d/yyyy hh:mm a");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String formattedDate = dateFormat.format(date);
于 2013-01-20T11:04:55.137 に答える
3

SimpleDateFormatにタイムゾーン情報を含めるように指示するのを忘れました。

これでうまくいきます:

SimpleDateFormat sdf=new SimpleDateFormat(
    "EEE M/d/yyyy hh:mm a zzzZ yyyy");

Z時間差を表示するには、最後の大文字に注意してください

これは印刷されます:

2013年1月20日日曜日12:09PMCET + 0100 2013

GMTにする必要がある場合は、次のように強制できます。

sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

これで、次のように印刷されます。

2013年1月20日日曜日11:11AMGMT + 0000 2013

AM / PMが必要ない場合は、a

于 2013-01-20T11:03:46.787 に答える