1

同じ文字列を System.out しようとしています

System.out.println(" DATE 29 " + new Date(1330462800000l) + " Date 01 "
                + new Date(1330549200000l));

しかし、ビルド(コンソールモードで実行)でチェックすると、Eclipseからアプリケーションを実行すると、結果が異なります。

Eclipseからの出力(正しい結果のようです):

DATE 29 Wed Feb 29 00:00:00 EET 2012 Date 01 Thu Mar 01 00:00:00 EET 2012

ビルドからの出力 (コンソール モード)

DATE 29 Tue Feb 28 23:00:00 EET 2012 Date 01 Wed Feb 29 23:00:00 EET 2012

ばかげた質問で申し訳ありませんが、考えられる理由について何か考えはありますか?

PS:maven + tycho を使用してビルド、パッケージ タイプの eclipse-repository を作成します (本当に問題がある場合)。

編集: Eclipse では、timeZone の値を確認しました:

Calendar calendar=Calendar.getInstance();
System.out.println("!!!time zone before: " +   calendar.getTimeZone());

!!!前のタイムゾーン: sun.util.calendar.ZoneInfo[id="Europe/Minsk",offset=7200000,dstSavings=3600000,useDaylight=true,transitions=121,lastRule=java.util.SimpleTimeZone[id=Europe /ミンスク,offset=7200000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=7200000,startTimeMode=1,endMode=2,endMonth= 9,endDay=-1,endDayOfWeek=1,endTime=7200000,endTimeMode=1]]

次に、ハードコードされた zoneId でタイムゾーンを設定し、ビルドを作成しました

calendar.setTimeZone(TimeZone.getTimeZone("Europe/Minsk"));

結果がありません

編集:ビルドとEclipseでjresの異なるバージョンとアーキテクチャを使用しています..それが理由でしょうか? 編集:

System.out.println("!!!!!! system.timezone " + System.getProperty("user.timezone"));
System.setProperty("user.timezone", "Europe/Minsk");
System.out.println("!!!!!! system.timezone " + System.getProperty("user.timezone"));

!!!!!! system.timezone ヨーロッパ/ミンスク

!!!!!! system.timezone Europe/Minsk!!!ゾーン後のカレンダー時間: sun.util.calendar.ZoneInfo[id="Europe/Minsk",offset=7200000,dstSavings=3600000,useDaylight=true,transitions=121,lastRule=java. util.SimpleTimeZone[id=Europe/Minsk,offset=7200000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=7200000,startTimeMode=1 ,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=7200000,endTimeMode=1]]

正しいタイムゾーン。しかし、日付はまだ間違っています

4

2 に答える 2

1

テストに追加:

System.out.println(Calendar.getInstance().getTimeZone());

また

System.getProperty("user.timezone");

Java タイムゾーンは、システム プロパティ user.timezone で設定できます。詳細については、 Java システム プロパティを参照してください。

時間にはjoda timeを使用します。すべての joda オブジェクトのタイムゾーンを再定義できます。

DateTimeZone.setDefault(DateTimeZone.UTC);
于 2012-03-06T08:00:06.827 に答える