2012-01-10 48 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)。不是很方便,但是...

相關問題