cal.set(Calendar.MONTH, 7);
cal.set(Calendar.DATE,13);
cal.set(Calendar.HOUR_OF_DAY, 11);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.YEAR, 2011);
cal.setTimeZone(TimeZone.getDefault()/*getTimeZone("GMT+5:30")*/);
我使用上面的代码来设置日期和时间,但在设置后如果我尝试通过 cal.getTime()检索它,我会得到日期和时间
sat Aug 13 11:01:01 America/NewYork 2011
答案 0 :(得分:3)
Java Calendar类中的月份编号为0到11,而不是1到12.因此,从您想要的月份数中减去1。
编辑添加:Calendar类有许多静态变量,包括一年中的十二个月 - Calendar.JANUARY(整数0),Calendar.FEBRUARY(整数1)等。我建议你尽可能使用那些,而不是整数。
答案 1 :(得分:3)
是的,这正是你所设定的。
如果你预计它是7月份,你需要更仔细地阅读JavaDoc for Calendar.MONTH
- 它是基于0的:
get和set的字段编号,表示月份。这是特定于日历的值。格列高利历和朱利安历的一年中的第一个月是1月,即0;最后一个取决于一年中的月数。
我实际上建议您使用Joda Time代替,如果您可以在Blackberry上使用它 - 它是很多更好的API。
答案 2 :(得分:2)
java.util.Calendar
类计算从0开始的月数,但是使用每月实际日期的天数。这是一个极其常见问题 - 当他们第一次使用Java Date
或Calendar
类进行编程时,几乎每个人都会绊倒。