私は2台のコンピュータを持っていて、それぞれが異なるTimeZoneを持っています。その後、System.currentTimeMillis()
を印刷1つのコンピュータイムでTimeZoneを使用してjava.util.Dateですか?
、そして両方のコンピュータで次のコマンドを出力します。 System.out.println(new Date(123456));
- 数について> 123456スタンドは、コンピュータ#1にcurrentTimeMillis
に来ました。
両方のコンピュータで2番目のプリント(ハードコードされたものの)が異なるプリント結果になります。 なぜですか?
java.util.Dateは、タイムゾーンに多少依存します。 Java SDK7からのコピー&ペーストjava.util.Date.toString() 'TimeZone zi = date.getZone(); if(zi!= null){ sb.append(zi.getDisplayName(date.isDaylightTime()、zi.SHORT、Locale.US)); // zzz } else { sb.append( "GMT"); } '' date'はタイムゾーンが 'TimeZone.getDefaultRef()'に設定された 'BaseCalendar'です –
キーポイントはあなたがtoString()メソッドについて話していることです。私はtoString()の実装を見ていないと言いましたが、カレンダーが関係していると思われました。あなたはただそれを確認しました。私たちの間に意見の相違はありません。 –
'Date'オブジェクトはタイムゾーンを持つ' cdate'メンバ( 'BaseCalendar'です)で動作します。そして、誰も本当に気にしないものが起こります。あなたがそれを印刷しない限り、 'Date'は時間帯に依存しない振る舞いをします。あなたの答えに矛盾するつもりはありませんでした。 –