3

このコードを考えると...

 String date = "11:00 AM";

 SimpleDateFormat sdf = new SimpleDateFormat("h:mm a");

 sdf.setTimeZone(TimeZone.getTimeZone("US/Eastern")); // --> should be GMT-4

 TimeZone.setDefault(TimeZone.getTimeZone("GMT"));

 Date parse = sdf.parse(date); // -- gives Thu Jan 01 16:00:00 GMT 1970

日付の解析で 15:00 ではなく 16:00 が表示されるのはなぜですか?

4

3 に答える 3

1

java.util.Date時刻のみの保存には使用できません。1970 年が割り当てられますが、これは場合によっては正しくありません。に使用することをお勧めしますorg.joda.time.LocalTime

于 2013-03-12T11:17:11.890 に答える
0

デフォルトで日付部分を提供していない場合は、デフォルトEpoche standard date(01 Jan 1970 00:00 Hoursが呼び出されて割り当てられ、Epoche standard timeすべての時間関連の計算を基準時間として測定するための標準として採用されます)。

java.util.Date クラスのメソッドは、指定された からgetTime()までの合計ミリ秒数を返します。メソッドを使用していないため、ここでは関係ありません。ですから、単にその時間を取得しています。そしてGMTによると、それは正しいです。date(including time also)Epoche standard( 01 Jan 1970 00:00 Hours)getTime()

お役に立てると思います。

于 2013-03-12T12:47:07.083 に答える
0

デイライトセービングも考慮してください。これはあなたが期待するものを与えるはずです

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

于 2013-03-12T11:03:58.103 に答える