如何在java或groovy中查找两个日期之间的天数?

maa*_*aaz 11 java groovy

我有一个方法,它使用以下逻辑来计算天数之间的差异.

long diff = milliseconds2 - milliseconds1;
long diffDays = diff / (24 * 60 * 60 * 1000);
Run Code Online (Sandbox Code Playgroud)

但是我要求前者,无论是秒还是毫秒考虑9th feb 2011 to 19th feb 2011都应该给我11几天.我怎样才能做到这一点?

Chr*_*wes 32

对于你要求的groovy解决方案,你应该考虑使用这个:

use(groovy.time.TimeCategory) {
   def duration = date1 - date2
   println "days: ${duration.days}, Hours: ${duration.hours}"
}
Run Code Online (Sandbox Code Playgroud)

它非常容易理解,而且非常易读.您问了一个示例,如何在一个简单的方法中使用它来计算两个日期之间的天数.所以这是你的榜样.

class Example {

    public static void main(String[] args) {
        def lastWeek = new Date() - 7;
        def today = new Date()

        println daysBetween(lastWeek, today)
    }

    static def daysBetween(def startDate, def endDate) {
        use(groovy.time.TimeCategory) {
            def duration = endDate - startDate
            return duration.days
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您运行此示例,它将打印您7.您还可以通过使用before()after()启用反转日期来增强此方法.


Joe*_*oel 12

这是一个很好的线,但对于日期使用JodaTime.

以下是使用JodaTime 计算日期间隔的方法.

Days days = Days.daysBetween(new DateTime(millis1), new DateTime(millis2));
int daysBetweenDates = days.getDays();
Run Code Online (Sandbox Code Playgroud)