1. 程式人生 > >Java計算兩個日期間的年,月,日之差

Java計算兩個日期間的年,月,日之差

由於在開發中需要計算車的使用年限,我當時使用的是以下方案並記錄下來,希望能給有需要計算日期差的朋友有所幫助。當然,中間的計算邏輯根據不同要求來計算。
有錯的地方請留言告知


/** 
 *  計算使用年限
 *  enrollDate :註冊日期
 *  nowDate : 當前日期或給定日期
 */
public void CalculateTheUseYaers (String enrollDate,String nowDate){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 建立日期格式
        Calendar c1 = Calendar.getInstance(); // 建立日曆物件
Calendar c2 = Calendar.getInstance(); try { c1.setTime(sdf.parse(enrollDate)); c2.setTime(sdf.parse(nowDate)); } catch (ParseException e) { e.printStackTrace(); } int years = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR); // 計算年度差
int month = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);// 計算月度差 int day = c2.get(Calendar.DAY_OF_MONTH) - c1.get(Calendar.DAY_OF_MONTH);// 計算日數差 (DAY_OF_MONTH為月中的天數) int months = years *12 + month; // 計算總共相差的月份數 System.out.println("年度差:"+ years); System.out.println("月度差:"
+ month); System.out.println("天數差:" + day); System.out.println("共相差月份:"+ months); if (years == 0) { // 同一年 if (months < 11) { // 共相差月份小於11 System.out.println("使用年限為0"); } if (months == 11) { // 共相差月份等於11 if (day < 0) { // 相差天數小於0 System.out.println("使用年限為0"); } if (day >= 0) { // 相差天數大於等於0 System.out.println("使用年限為1"); } } } if (years ==1) { // 相差一年 if (months < 11) { // 共相差月份小於11 System.out.println("使用年限為0"); } if (months == 11) { // 共相差月份等於11 if (day < 0) { // 相差天數小於0 System.out.println("使用年限為0"); } if (day >= 0) { // 相差天數大於等於0 System.out.println("使用年限為1"); } } if (months > 11) { System.out.println("使用年限為1"); } } if (years >=2) { // 相差2年或2年以上 if (month < 0) { // 月度差小於0 System.out.println("使用年限為:"+(years - 1)); } if (month == 0) { // 月度差等於0 if (day < 0) { // 日數差小於0 System.out.println("使用年限為:"+(years - 1)); } if (day >= 0) { // 日數差大於等於0 System.out.println("使用年限為:"+ years); } } if (month > 0) { // 月度差大於0 System.out.println("使用年限為:"+ years); } } }