向格里高利历添加小时数的问题

时间:2011-06-08 17:56:19

标签: grails groovy gregorian-calendar

我有一个Grails应用程序,我创建了一个格里高利历GMT日期。一天中的时间是11:00:00 PM GMT。我向Gregorian Calendar对象添加了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。有人可以教育我吗?

1 个答案:

答案 0 :(得分: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