BlackBerry Java中的日历问题

时间:2011-07-13 13:17:01

标签: blackberry java-me

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

3 个答案:

答案 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 DateCalendar类进行编程时,几乎每个人都会绊倒。