Java獲取兩個日期相差的月數
阿新 • • 發佈:2019-01-05
在網上找了一下關於求兩個日期相差月數的,發現不是沒算年份就是算的不對,這裡我寫了一個,留著以後可能用到,自己測試目前沒問題,在這裡分享一下,需要藉助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
測試結果正確