Java 查找日期差异
如果一个日期比另一个日期早5天,有效的方法是什么?在比较之前,是否需要先使用特定的SimpleDataFormat解析这两天?最快,但最不准确的是,您可以将两者都放入java.util.Date,getTime()中,然后将差值除以一天中的毫秒数Java 查找日期差异,java,date,Java,Date,如果一个日期比另一个日期早5天,有效的方法是什么?在比较之前,是否需要先使用特定的SimpleDataFormat解析这两天?最快,但最不准确的是,您可以将两者都放入java.util.Date,getTime()中,然后将差值除以一天中的毫秒数 days = (date2.getTime() - date1.getTime())/86400000L 通过创建两个日历对象并使用它们,可以使其更加精确 如果您真的想很好地解决这一问题,并且手头有足够的时间,请查看Joda time。最快,但最不准
days = (date2.getTime() - date1.getTime())/86400000L
通过创建两个日历对象并使用它们,可以使其更加精确
如果您真的想很好地解决这一问题,并且手头有足够的时间,请查看Joda time。最快,但最不准确的是,您可以将两者都放入java.util.Date,getTime()中,然后将差值除以一天中的毫秒数 通过创建两个日历对象并使用它们,可以使其更加精确
如果您真的想很好地解决这个问题,并且手头有足够的时间,请查看Joda time。最好的Java日期时间API是。它使这些任务和其他任务比使用标准API容易得多。最好的Java日期时间API是。它使这些任务和其他任务比使用标准API容易得多。日历界面有一些很好的方法,包括
之前
,之后
,以及等于
日历界面有一些很好的方法,包括之前
,之后
,等于
你能行
Date date1 = // whatever
Date date2 = // whatever
Long fiveDaysInMilliseconds = 1000 * 60 * 60 * 24 * 5
boolean moreThan5Days = Math.abs(date1.getTime() - date2.getTime()) > fiveDaysInMilliseconds
Long DAY_IN_MILLIS = 86400000;
if((dateA - dateB) > DAY_IN_MILLIS * 5) {
// dateA is more than 5 days older than dateB
}
你能行
Long DAY_IN_MILLIS = 86400000;
if((dateA - dateB) > DAY_IN_MILLIS * 5) {
// dateA is more than 5 days older than dateB
}
天=(date2.getTime()-date1.getTime())天=(date2.getTime()-date1.getTime())如果需要忽略日期的时间,可以执行以下操作
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());
}
如果需要忽略日期的时间,可以执行以下操作
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());
}
这可能是最有效的,但不考虑DST。-1除非日期实例源自UTC时间,否则这是错误的。这可能是最有效的,但不考虑DST。-1除非日期实例源自UTC时间,否则这是错误的。5个日历日?5个工作日?5个日历日?5个工作日?但整个API都相当史诗般的失败:请参阅本主题中的日历示例和jodatime示例:整个API都相当史诗般的失败:请参阅本主题中的日历示例和jodatime示例:您不能只说
date1-date2
。谢谢,我忘记了对“getTime()的调用)“-我最近一直在使用Groovy,它重载了“-”操作符,所以你可以说date1-date2
你不能只说date1-date2
。谢谢,我忘了调用'getTime()“-我最近一直在使用Groovy,它重载了“-”操作符,因此可以说date1-date2
这是不正确的,因为java.util.Date.getTime()返回毫秒数。因此,这个差异给出了date1和date2之间的毫秒数。这是不正确的,因为java.util.Date.getTime()返回毫秒数。所以这个差异给出了date1和date2之间的毫秒数。