日期差计算在Java中[复制](Date difference calculation in Jav

2019-09-17 05:25发布

这个问题已经在这里有一个答案:

  • 计算两个Java日期实例之间的区别 45个回答

我想计算两个日期之间的差值。 目前,我做的:

Calendar firstDate = Calendar.getInstance();
firstDate.set(Calendar.DATE, 15);
firstDate.set(Calendar.MONTH, 4);
firstDate.get(Calendar.YEAR);

int diff = (new Date().getTime - firstDate.getTime)/(1000 * 60 * 60 * 24)

这给了我输出0。但我想,我应该得到的输出0时,新的Date()为15.目前的新日期为14。它使我进一步的计算错误,我很困惑如何解决这个问题。 请建议。

Answer 1:

发现两个日期之间的差不为减去两个日期和(24 * 60 * 60 * 1000)将所述结果作为简单。 逸岸,它的错误!

/* Using Calendar - THE CORRECT (& Faster) WAY**/  
//assert: startDate must be before endDate  
public static long daysBetween(final Calendar startDate, final Calendar endDate) {  
 int MILLIS_IN_DAY = 1000 * 60 * 60 * 24;  
 long endInstant = endDate.getTimeInMillis();  
 int presumedDays = (int) ((endInstant - startDate.getTimeInMillis()) / MILLIS_IN_DAY);  
 Calendar cursor = (Calendar) startDate.clone();  
 cursor.add(Calendar.DAY_OF_YEAR, presumedDays);  
 long instant = cursor.getTimeInMillis();  
 if (instant == endInstant)  
  return presumedDays;  
 final int step = instant < endInstant ? 1 : -1;  
 do {  
  cursor.add(Calendar.DAY_OF_MONTH, step);  
  presumedDays += step;  
 } while (cursor.getTimeInMillis() != endInstant);  
 return presumedDays;  
}  

你可以阅读更多关于此这里 。



Answer 2:

我不认为通过创建一个新的Date()会给你当前的时间和日期,而不是这样做:

Calendar cal = Calendar.getInstance();
Date currentDate = cal.getTime();
Date firstDate = new Date();
firstDate.setHour(...);
firstDate.setMinute(...);
firstDate.setSeconds(...);

long dif = currentDate.getTime() - firstDate.getTime();

所以你可以看到,你可以像从一个中减去另一个那么简单......



文章来源: Date difference calculation in Java [duplicate]