Java比較兩個時間段之間相差多少天,多少個月,多少年


在項目開發當中,我們時常碰到要比較兩個時間或者與當前時間相差多少天,多少個月,多少年的問題。

下面給大家分享一下我的整理的一個例子:

package com.test;  
import java.text.DateFormat;  
import java.text.SimpleDateFormat;  
import java.util.Calendar;  
import java.util.Date;  
/**  
 * @description 日期比較天 月 年  
 * @author www.javawind.net  
 */ 
public class DateTest {  
    public static void main(String[] args) {  
        String date = "2008-06-12";  
          
        DateTest.compareDate(date, null, 0);  
        DateTest.compareDate(date, null, 1);  
        DateTest.compareDate(date, null, 2);  
          
        date = "2006-06-03";          
        DateTest.compareDate(date, null, 0);  
        DateTest.compareDate(date, null, 1);  
        DateTest.compareDate(date, null, 2);  
        DateTest.compareDate(date, "2009-06-01", 0);  
        DateTest.compareDate(date, "2009-06-01", 1);  
        DateTest.compareDate(date, "2009-06-01", 2);  
    }  
      
    /**  
     * @param date1 需要比較的時間 不能為空(null),需要正確的日期格式  
     * @param date2 被比較的時間  為空(null)則為當前時間  
     * @param stype 返回值類型   0為多少天,1為多少個月,2為多少年  
     * @return  
     */ 
    public static int compareDate(String date1,String date2,int stype){  
        int n = 0;  
          
        String[] u = {"天","月","年"};  
        String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";  
          
        date2 = date2==null?DateTest.getCurrentDate():date2;  
          
        DateFormat df = new SimpleDateFormat(formatStyle);  
        Calendar c1 = Calendar.getInstance();  
        Calendar c2 = Calendar.getInstance();  
        try {  
            c1.setTime(df.parse(date1));  
            c2.setTime(df.parse(date2));  
        } catch (Exception e3) {  
            System.out.println("wrong occured");  
        }  
        //List list = new ArrayList();  
        while (!c1.after(c2)) {                     // 循環對比,直到相等,n 就是所要的結果  
            //list.add(df.format(c1.getTime()));    // 這里可以把間隔的日期存到數組中 打印出來  
            n++;  
            if(stype==1){  
                c1.add(Calendar.MONTH, 1);          // 比較月份,月份+1  
            }  
            else{  
                c1.add(Calendar.DATE, 1);           // 比較天數,日期+1  
            }  
        }  
          
        n = n-1;  
          
        if(stype==2){  
            n = (int)n/365;  
        }     
          
        System.out.println(date1+" -- "+date2+" 相差多少"+u[stype]+":"+n);        
        return n;  
    }  
      
    /**  
     * 得到當前日期  
     * @return  
     */ 
    public static String getCurrentDate() {  
        Calendar c = Calendar.getInstance();  
        Date date = c.getTime();  
        SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd");  
        return simple.format(date);  
    }  
} 

運行的結果:

2008-06-12 -- 2009-06-09 相差多少天:362
2008-06-12 -- 2009-06-09 相差多少月:12
2008-06-12 -- 2009-06-09 相差多少年:0
2006-06-03 -- 2009-06-09 相差多少天:1102
2006-06-03 -- 2009-06-09 相差多少月:36
2006-06-03 -- 2009-06-09 相差多少年:3
2006-06-03 -- 2009-06-01 相差多少天:1094
2006-06-03 -- 2009-06-01 相差多少月:36
2006-06-03 -- 2009-06-01 相差多少年:2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM