2

グレゴリオ暦のGMT日付を作成したGrailsアプリケーションがあります。時刻はでした11:00:00 PM GMT。グレゴリオ暦オブジェクトに3時間を追加しましたが、時刻がに変更されました2:00:00 AMが、年の日は増加しませんでした。カレンダーに時間を追加するときにケースをチェックする必要があり、その新しい時間が新しい日に経過する必要がある場合は、その年の日をインクリメントする必要がありました。これはGregorianCalendarクラスのバグのようですが、私が何か間違ったことをしていないことを確認したいと思います。これが私が時間を追加したさまざまな方法です。

myCalender.add(Calender.HOUR,3)

myCalender.add(Calender.HOUR_OF_DAY,3)`

myCalender.setTimeInMillis( myCalender.getTimeInMillis() + (( (1000 * 60) * 60) * 3))`

たとえば、開始日時6/1/2011 11:00:00 PM GMTが上記のコードを実行した場合、新しい日時が期待されます6/2/2011 02:00:00 AM GMTが、取得したのはでした6/1/2011 02:00:00 AM GMT。誰かが私を教えてくれませんか?

4

1 に答える 1

4

私のために働く:

final DateFormat format = SimpleDateFormat.getDateTimeInstance();
format.setTimeZone(DateUtils.UTC_TIME_ZONE);

final GregorianCalendar cal = new GregorianCalendar(DateUtils.UTC_TIME_ZONE);
cal.set(2011, Calendar.JUNE, 1, 23, 30, 0);
System.out.println(format.format(cal.getTime()));
cal.add(Calendar.HOUR_OF_DAY, 1);
System.out.println(format.format(cal.getTime()));

プロデュース:

2011-06-01 23:30:00
2011-06-02 00:30:00
于 2011-06-08T18:33:09.153 に答える