如何获取两个日历实例之间的天数?

2022-09-01 02:23:56

我想找出两个对象在天数上的差异,如果有日期变化,比如如果时钟从23:59-0:00滴答作响,应该有一天的差异。Calendar

我写了这个

public static int daysBetween(Calendar startDate, Calendar endDate) {  
    return Math.abs(startDate.get(Calendar.DAY_OF_MONTH)-endDate.get(Calendar.DAY_OF_MONTH));  
} 

但它不起作用,因为它只给出天之间的差异,如果有月差异,它毫无价值。


答案 1

请尝试以下方法:

public static long daysBetween(Calendar startDate, Calendar endDate) {
    long end = endDate.getTimeInMillis();
    long start = startDate.getTimeInMillis();
    return TimeUnit.MILLISECONDS.toDays(Math.abs(end - start));
}

答案 2

在Java 8及更高版本中,我们可以简单地使用java.time类。

hoursBetween = ChronoUnit.HOURS.between(calendarObj.toInstant(), calendarObj.toInstant());

daysBetween = ChronoUnit.DAYS.between(calendarObj.toInstant(), calendarObj.toInstant());