Java 查找日期差异

Java 查找日期差异,java,date,Java,Date,如果一个日期比另一个日期早5天,有效的方法是什么?在比较之前,是否需要先使用特定的SimpleDataFormat解析这两天?最快,但最不准确的是,您可以将两者都放入java.util.Date,getTime()中,然后将差值除以一天中的毫秒数 days = (date2.getTime() - date1.getTime())/86400000L 通过创建两个日历对象并使用它们,可以使其更加精确 如果您真的想很好地解决这一问题,并且手头有足够的时间,请查看Joda time。最快,但最不准

如果一个日期比另一个日期早5天,有效的方法是什么?在比较之前,是否需要先使用特定的SimpleDataFormat解析这两天?

最快,但最不准确的是,您可以将两者都放入java.util.Date,getTime()中,然后将差值除以一天中的毫秒数

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之间的毫秒数。