高分简单问题:用2007年5月31日设置Calendar后为什么变成了2007年6月1日?如何克服这问题?

umeshu 2007-11-02 11:15:14
Calendar calCurrent = Calendar.getInstance();
calCurrent.set(2007, 5, 31)
System.out.println(calCurrent.get(Calendar.DAY_OF_MONTH));

输出怎么为6而不是5?
真奇怪。。。这么简单的程序除了什么问题?
...全文
126 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
umeshu 2007-11-03
  • 打赏
  • 举报
回复
我有个毛病,编程几乎不看doc
这个的确超越了我直觉的范围,没有想到会用0标识一月,有点bt。不过好歹问题解决了,谢谢各位!
Willam2004 2007-11-02
  • 打赏
  • 举报
回复
顶楼上的
「已注销」 2007-11-02
  • 打赏
  • 举报
回复
月份从0开始
calCurrent.set(2007, 5, 31)
实际设置是6月31号,6月最多30天,6月31号被解释为7月1号,获取MONTH返回6
bigelf 2007-11-02
  • 打赏
  • 举报
回复
set
public final void set(int year,
int month,
int date,
int hourOfDay,
int minute,
int second)设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()。

参数:
year - 用来设置 YEAR 日历字段的值。
month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。
date - 用来设置 DAY_OF_MONTH 日历字段的值。
hourOfDay - 用来设置 HOUR_OF_DAY 日历字段的值。
minute - 用来设置 MINUTE 日历字段的值。
second - 用来设置 SECOND 日历字段的值。

------------------------------------------------------------

月份从0开始
umeshu 2007-11-02
  • 打赏
  • 举报
回复
上面贴错代码了,为啥不让我修改?
我重来我:

Calendar calCurrent = Calendar.getInstance();
calCurrent.set(2007, 5, 31)
System.out.println(calCurrent.get(Calendar.MONTH));

输出怎么为6而不是5?
真奇怪。。。这么简单的程序除了什么问题?
無名VF 2007-11-02
  • 打赏
  • 举报
回复
呵呵 答案已经都被他们说的很清楚了 帮顶
xiyuan1999 2007-11-02
  • 打赏
  • 举报
回复
calCurrent.set(2007, 4, 31)

表示2007-5-31
xiyuan1999 2007-11-02
  • 打赏
  • 举报
回复
月份从0开始的
imA 2007-11-02
  • 打赏
  • 举报
回复
结帖吧,建议楼主好好看看JDK API文档,免得浪费了100分,呵呵

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧