我有一个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
。有人可以教育我吗?
答案 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