1

特定の timezone に設定して Date 値を作成する必要があるプロジェクトに取り組んでいます。

次のコードを使用しました

Date formatter1 = new Date(HttpDateParser.parse("2013-08-02 11:00:00"));
System.out.println("Date dd formatter1"+formatter1);

結果は次のとおりです。

Fri Aug 02 16:30:00 Asia/Calcutta 2013

解析後、デバイスのタイムゾーンに従って時間を与えてくれます...デバイスのタイムゾーンがインドのコルカタに設定されている場合、5:30 を自動的に追加します。

結果を次のようにしたい:

Fri Aug 02 11:00:00 Asia/Calcutta 2013

つまり、 GMT への参照としてオフセットを追加すべきではありません。

このコードを使用して、必要なデータをタイムゾーンに従って設定し、内部で変更しないようにするにはどうすればよいですか?

4

1 に答える 1

1

1 つの問題は、元の日付文字列:

2013-08-02 11:00:00

タイムゾーン情報は含まれません。そのため、GMT 時間として解釈されています。つまり、カルカッタ時間で表示すると、

Fri Aug 02 16:30:00 Asia/Calcutta 2013

すでにカルカッタ時間で11:00あることを指定します。これを行うには、HttpDateParser ドキュメントで定義されている形式のいずれかを使用します。

  // we make sure to specify time zone information "+05:30"!
  long timeSinceEpoch = HttpDateParser.parse("2013-08-02T11:00:00+05:30");

  Date date = new Date(timeSinceEpoch);
  System.out.println("Date: " + date);
  
  // use this to slightly change the date formatting ... same time zone
  String pattern = "yyyy-MM-dd hh:mma";
  SimpleDateFormat formatter = new SimpleDateFormat(pattern);
  String formattedDate = formatter.formatLocal(timeSinceEpoch);

  System.out.println("SimpleDateFormat: " + formattedDate);

: 時刻文字列に追加"+5:30"するだけでなく、日付の後のスペースを'T'.

このコードは次を出力します。

[0.0] 日付: Fri Aug 02 11:00:00 Asia/Calcutta 2013

[0.0] SimpleDateFormat: 2013-08-02 11:00am

デバイスのタイム ゾーンが実際にカルカッタ (コルカタ +5.5) に設定されている場合。

参考文献

Stack Overflow でこの回答をご覧ください。
そして多分これも

于 2013-08-05T22:33:06.423 に答える