0
我試圖從兩個日曆的差異中獲得以秒爲單位的時間,並知道結果是否超過一天(86400secs)。問題是有時候我會得到很大的負面價值。計算兩個Java日曆之間的差異
private long calcValidityDuration(XMLGregorianCalendar greg, XMLGregorianCalendar gregStart) {
int minEnd = greg.getMinute();
int minStart = gregStart.getMinute();
int hourStart = gregStart.getHour();
int hourEnd = greg.getHour();
int dayEnd = greg.getDay();
int dayStart = gregStart.getDay();
int monthStart = gregStart.getMonth();
int monthEnd = greg.getMonth();
int yearStart = gregStart.getYear();
int yearEnd = greg.getYear();
Calendar cal = new GregorianCalendar();
cal.set(yearEnd, monthEnd - 1, dayEnd, hourEnd, minEnd);
Calendar calStart = new GregorianCalendar();
calStart.set(yearStart, monthStart - 1, dayStart, hourStart, minStart);
long toRet = (((cal.getTimeInMillis()) - (calStart.getTimeInMillis()))/1000);
if(toRet >= 86400){
return 86400;
}else{
return toRet;
}
}
這裏一些有問題的日期:
開始日期:30/09/16 07 結束日期:29/09/16 16
開始日期:29/09/16 16 結束日期:29/09/16 16
開始日期:30/09/16 08 結束日期:29/09/16 16
開始日期:29/09/16 16 結束日期:21/11/14 19
開始日期:29/09/16 16 結束日期:20/03/14 13
您能否給我們,讓您的輸入的例子大的負面價值? –
另外,我不知道這對你的用例是否有意義。但是當夏令時開始和結束時,您會得到不是86400秒的日子。 –
請以我們可以運行它們的方式提供錯誤示例 - 並且已經運行它們(錯誤可能在那裏)。不要指望我們找到一種方法將這些日期輸入到算法中。 –