Calendar.JANUARY实际上
0不是
1。
当你提供
01的是当月领域
set,你每月实际设置至2月,这就是为什么你
02当
SimpleDateFormat它呈现为
MM。
使用任何一种
Calendar.get/set方法时,都必须采取额外的预防措施,以确保您意识到“自然的”基于1的索引与更“笨拙的”
Calendar基于0的索引之间的差异。每当您获取/设置a的月份时
Calendar,总有可能导致严重的错误。
这只是那些真正尴尬的设计之一
Calendar,还有很多不足之处。Joda
Time是目前可用的更好,更令人愉快的日期/时间API库之一,因此,如果有可能,您可以考虑改用该库。
API链接
Calendar.MONTH
-“字段get
和set
表示月份的字段号。这是日历特定的值。年份的第一个月JANUARY
为0”。Calendar.set(…, int month, …)
-“month
-用于设置MONTH
日历字段的值。月份值从0开始,例如1月份为0。
关于八进制字面量
另外,请注意,这
01实际上是一个八进制文字(即以8为底)。您不应该养成使用
0整数常量(第3.10.1节)的习惯,因为除非您非常小心,否则它们可能导致细微的错误/错误。
例如,
int i = 09;是非法的Java代码。
System.out.println(010); // prints 8, not 10



