我遇到了一个问题,因为我试图将日期传递给Calendar.before()和Calendar.after(),而不是传递Calendar。
如果传递一个日期,这些方法总是返回false。
Calendar
的子类,使用各种数据类型(如 Date),而不会破坏 Calendar.before(Object)
或 Calendar.after(Object)
方法的签名。除此之外,没有其他好的理由可以想到。所以可能你必须接受它。日历在接收对象时不是以字符串格式化的日期形式。
为使其正常工作,请尝试发送:
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);
应该可以了。
至于为什么 - 我认为没有一个真正好的理由,整个类都过于复杂了。
when
是否是Calendar
的实例。根据 Java 文档的说法,只有当when
是Calendar
实例时才会这样。至于为什么,我不清楚。 - Sotirios Delimanolis