2012-01-10 76 views
2

我发现类似的建议:如何计算考虑日间保存班次的日期之间的天数?

Calendar calendar1 = Calendar.getInstance(); 
Calendar calendar2 = Calendar.getInstance(); 
calendar1.set(2007, 01, 10); 
calendar2.set(2007, 07, 01); 
long milliseconds1 = calendar1.getTimeInMillis(); 
long milliseconds2 = calendar2.getTimeInMillis(); 
long diff = milliseconds2 - milliseconds1; 
long diffSeconds = diff/1000; 
long diffMinutes = diff/(60 * 1000); 
long diffHours = diff/(60 * 60 * 1000); 
long diffDays = diff/(24 * 60 * 60 * 1000); 

但是从冬天变更时间到夏时有1小时的时差。有没有一种常用的方法来计算这个?谢谢。

+0

还关注闰秒,闰年等 – user710818 2012-01-10 10:30:08

回答

2

你应该考虑使用joda时间库,它提供了更有用的日期时间接口。例如,你的问题就解决了仅仅指刚这样的:Days.daysBetween(startInstant, endInstant).getDays()

至于使用非标准日历 - 我可以不考虑更好的选择,然后使用Calendar.get(Calendar.DAY_OF_YEAR) - 这将让你的能力来获得差异在一个日历年内的天数。为了将这种方法推广到几年,我建议仅在开始和结束时间之间的所有中间年份迭代,总结Calendar.getActualMaximum(DAY_OF_YEAR)。不是很方便,但是...

相关问题