为什么Calendar.before()和Calendar.after()接受对象值?

时间:2013-12-22 19:59:19

标签: java date datetime

我遇到了问题,因为我试图将Date传递给Calendar.before()和Calendar.after()而不是传递Calendar。

如果传递日期,这些方法总是返回false。

2 个答案:

答案 0 :(得分:2)

可能是因为有人可以编写Calendar的子类,它可以处理各种数据类型,例如Date,而不会破坏Calendar.before(Object)Calendar.after(Object)方法签名。 没有其他可以理解的理由。所以你可能不得不忍受它。

您还可以查看Calendar.before(Object when), why Object?

答案 1 :(得分:0)

日历前后收到一个对象而不是日期格式化为字符串 使其工作尝试发送:

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
cal.setTime(sdf.parse("Mon Mar 14 16:02:37 GMT 2011"));

Calendar.before(cal);

应该这样做。

至于为什么 - 不要认为真正有充分的理由让整个班级变得复杂,超出理由。