2017-10-15 89 views
-4

我從網上覆制了代碼來計算兩個日期之間的天數。它往往產生不正確的結果。例如,01/15/2008和03/15/2010之間的日期爲790.代碼返回789. 2013年12月30日至2017年2月28日期間的日期爲1156.代碼返回1152.錯誤由於代碼或日曆類?我正在複製下面的代碼。這是我的第一篇文章,我對任何協議錯誤表示歉意。 謝謝, 尼克Java日曆類

import java.util.Calendar; 

public class DateExperiment2 
{ 
    public static void main(String args[]) throws Exception 
    { 
    // Create Calendar instances 
    Calendar calendar1 = Calendar.getInstance(); 
    Calendar calendar2 = Calendar.getInstance(); 

    // Set the values for the calendar fields YEAR, MONTH, and DAY_OF_MONTH. 
    calendar1.set(2008, 1, 15); 
    calendar2.set(2010, 3, 15); 

    //Get Calendars' time value in milliseconds 
    long miliSecondForDate1 = calendar1.getTimeInMillis(); 
    long miliSecondForDate2 = calendar2.getTimeInMillis(); 

    // Calculate the difference in millisecond between two dates 
    long diffInMilis = miliSecondForDate1 - miliSecondForDate2; 

    //Convert milliseconds to days 
    long diffInDays = diffInMilis/(24 * 60 * 60 * 1000); 

    System.out.println(diffInDays); 
    } 
} 
+1

請減少此選項到[mcve]。不需要Swing UI或'isValidDateStr',或者變量a-f - 只需對「set」的調用進行硬編碼。作爲一個單獨的問題,你真的需要使用'java.util.Calendar'嗎?我強烈建議使用'java.time.LocalDate'代替它。 –

+0

謝謝。這是我的第一篇文章。將來我會使用你的指導方針。但是,問題依然存在。 Calendar類是否返回不正確的結果? – Nick

+0

有沒有必要等待下一個問題。你應該編輯一個好的形狀 - 這將使它更容易幫助你,以及它對未來的讀者更有用。 –

回答

0

結果和良好 但是,當你一個月01

`Calendar.Set(2000,1,15)` 

設置這意味着你將它設置2000 2月15日 一個月日曆從0

啓動

0 =是1月 1 = 2月...