2

forループを使用して1日のすべての時間を印刷し、Dateオブジェクトをインクリメントしようとしています。しかし、私は「Sun Mar 25 02:00:00」を持つことはできません、私はこれらだけを持っています:

Sun Mar 25 01:00:00 CET 2012
Sun Mar 25 03:00:00 CEST 2012
Sun Mar 25 03:00:00 CEST 2012
Sun Mar 25 04:00:00 CEST 2012
Sun Mar 25 05:00:00 CEST 2012

TimeZoneを使用することに興味はありません。問題は夏時間によるものだと思いますが、「Sun Mar2502:00:00」が必要です。その日付を作成するにはどうすればよいですか?

4

2 に答える 2

4

おそらく、UTC に設定された DateFormat オブジェクト (夏時間を観察しない) が必要です。UTC に設定されたカレンダーを使用すると、かなり単純になります。

public static void main(String[] args) {
    TimeZone utc = TimeZone.getTimeZone("UTC");
    Calendar date = Calendar.getInstance(utc);
    DateFormat format = DateFormat.getDateTimeInstance();
    format.setTimeZone(utc);
    date.set(2012, 02, 24, 23, 00, 00);
    for (int i = 0; i < 10; i++) {
        System.out.println(format.format(date.getTime()));
        date.add(Calendar.HOUR_OF_DAY, 1);
    }
}

これにより、次の出力が提供されます。

Mar 24, 2012 11:00:00 PM
Mar 25, 2012 12:00:00 AM
Mar 25, 2012 1:00:00 AM
Mar 25, 2012 2:00:00 AM
Mar 25, 2012 3:00:00 AM
Mar 25, 2012 4:00:00 AM
Mar 25, 2012 5:00:00 AM
Mar 25, 2012 6:00:00 AM
Mar 25, 2012 7:00:00 AM
Mar 25, 2012 8:00:00 AM

もちろん、フォーマッタを使用して、好きなように日付をフォーマットできます。

于 2013-01-07T18:44:03.907 に答える
0

このCalendarクラスを使用すると、値を変換するときにタイム ゾーンを指定できますDateAPI ドキュメントを参照してください

于 2013-01-07T18:10:14.893 に答える