Java日历。功能未返回预期结果后

时间:2014-01-19 11:07:40

标签: java calendar

我写了以下代码

Calendar now = Calendar.getInstance();
Calendar expiry = Calendar.getInstance();
expiry.set(2014, 1, 15, 0, 0); 
now.after(expiry);

这是假的,今天是19,它应该给予真实

我错过了什么吗?

1 个答案:

答案 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方法。
具体情况由具体的日历类确定。