1. 程式人生 > >Java獲取兩個日期相差的月數

Java獲取兩個日期相差的月數

在網上找了一下關於求兩個日期相差月數的,發現不是沒算年份就是算的不對,這裡我寫了一個,留著以後可能用到,自己測試目前沒問題,在這裡分享一下,需要藉助java.util.Calendar

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        Date date = format.parse("2013-02-01 00:00:00");
        //開始時間
        Calendar start = Calendar.getInstance();
        start.setTime(date);
        //結束時間
        Calendar end = Calendar.getInstance();

        if (!start.after(end)){
            int subMonthCount = 
                    (end.get(Calendar.YEAR) - start.get(Calendar.YEAR) == 0) 
                            ? end.get(Calendar.MONTH) - start.get(Calendar.MONTH)  //同一年
                    :   ((end.get(Calendar.YEAR) - start.get(Calendar.YEAR) >= 2) //年數差超過2年
                                ? (end.get(Calendar.YEAR) - start.get(Calendar.YEAR) - 1) 
                                    * 12 + start.getActualMaximum(Calendar.MONTH) - start.get(Calendar.MONTH) 
                                    + end.get(Calendar.MONTH) + 1
                                : start.getActualMaximum(Calendar.MONTH) - start.get(Calendar.MONTH) 
                                    + end.get(Calendar.MONTH) + 1);  //年數差為1,Calendar.get(MONTH) 第一月是0,所以+1
            System.out.println(subMonthCount);
        }


樓主測試時的當前時間是2015年4月13日

date = 2015-02-01 00:00:00時 執行結果2

date = 2014-02-01 00:00:00時 執行結果14

date = 2013-02-01 00:00:00時 執行結果26

測試結果正確