【发布时间】:2009-12-07 18:03:17
【问题描述】:
如果某个日期比另一天早 5 天,那么有效的方法是什么?在比较之前,我是否需要先使用特定的 SimpleDateFormat 解析这两天?
【问题讨论】:
-
5 个日历日? 5 个工作日?
如果某个日期比另一天早 5 天,那么有效的方法是什么?在比较之前,我是否需要先使用特定的 SimpleDateFormat 解析这两天?
【问题讨论】:
最好的 Java 日期时间 API 是 Joda Time。它使这些任务和其他任务比使用标准 API 容易得多。
【讨论】:
最快但最不准确的方法是,您可能只需将两者都放入 java.util.Date 和 getTime() 中,然后将差值除以一天中的毫秒数。
您可以通过创建两个 Calendar 对象并使用它们来使其更准确。
如果您真的想很好地解决这个问题,并且手头有很多时间,请查看 Joda Time。
【讨论】:
Calendar 接口有一些不错的方法,包括before、after 和equals。
【讨论】:
你可以的
Long DAY_IN_MILLIS = 86400000;
if((dateA - dateB) > DAY_IN_MILLIS * 5) {
// dateA is more than 5 days older than dateB
}
【讨论】:
Date date1 = // whatever
Date date2 = // whatever
Long fiveDaysInMilliseconds = 1000 * 60 * 60 * 24 * 5
boolean moreThan5Days = Math.abs(date1.getTime() - date2.getTime()) > fiveDaysInMilliseconds
【讨论】:
date1 - date2。
date1 - date2
如果您需要忽略日期的时间,您可以执行类似
的操作 public static boolean compare5days(Date date, Date another) {
Calendar cal = Calendar.getInstance();
cal.setTime(another);
cal.add(Calendar.DATE, -5);
// clear time
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return date.before(cal.getTime());
}
【讨论】:
days = (date2.getTime() - date1.getTime())/86400000L
【讨论】:
天 = (date2.getTime() - date1.getTime())
【讨论】: