我写了以下代码
Calendar now = Calendar.getInstance();
Calendar expiry = Calendar.getInstance();
expiry.set(2014, 1, 15, 0, 0);
now.after(expiry);
这是假的,今天是19,它应该给予真实
我错过了什么吗?
答案 0 :(得分:2)
(1)第1个月是2月,而不是1月份。第0个月是1月份。
(2)此外,我会在调用after()之前调用getTime(),以保证安全。
Calendar now = Calendar.getInstance();
Calendar expiry = Calendar.getInstance();
expiry.set(2014, 0, 15, 0, 0);
expiry.getTime();
now.after(expiry);
不确定是否严格要求调用getTime()。
我指的是JavaDoc的这一部分。
set(f,value)将日历字段f更改为值。另外,它设置了一个
内部成员变量,表示日历字段f已更改。
虽然日历字段f立即更改,但日历的时间值为
在下一次调用get(),getTime(),
getTimeInMillis(),add()或roll()之前,不会重新计算以毫秒为单位。因此,多次调用set()
不要触发多次不必要的计算。由于改变了
使用set()的日历字段,其他日历字段也可能会发生变化,具体取决于
在日历字段,日历字段值和日历系统上。
另外,get(f)不一定返回通过调用设置的值
重新计算日历字段后的set方法。
具体情况由具体的日历类确定。