計算兩個時間之間的天數


1第一種

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

 

public class Test {

 

    public static void main(String[] args) {

        try {

            //時間轉換類

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

            Date date1 = sdf.parse("2014-1-10");

            Date date2 = sdf.parse("2012-12-20");

            //將轉換的兩個時間對象轉換成Calendard對象

            Calendar can1 = Calendar.getInstance();

            can1.setTime(date1);

            Calendar can2 = Calendar.getInstance();

            can2.setTime(date2);

            //拿出兩個年份

            int year1 = can1.get(Calendar.YEAR);

            int year2 = can2.get(Calendar.YEAR);

            //天數

            int days = 0;

            Calendar can = null;

            //如果can1 < can2

            //減去小的時間在這一年已經過了的天數

            //加上大的時間已過的天數

            if(can1.before(can2)){

                days -= can1.get(Calendar.DAY_OF_YEAR);

                days += can2.get(Calendar.DAY_OF_YEAR);

                can = can1;

            }else{

                days -= can2.get(Calendar.DAY_OF_YEAR);

                days += can1.get(Calendar.DAY_OF_YEAR);

                can = can2;

            }

            for (int i = 0; i < Math.abs(year2-year1); i++) {

                //獲取小的時間當前年的總天數

                days += can.getActualMaximum(Calendar.DAY_OF_YEAR);

                //再計算下一年。

                can.add(Calendar.YEAR, 1);

            }

            System.out.println("天數差:"+days);

        } catch (ParseException e) {

            e.printStackTrace();

        }

    }

}

 

Console:

天數差:386



2第二種  



首先把獲取的字符串日期轉換成Date類型(從前臺頁面獲取的是字符串類型的日期 a,b):

Date a1 = new SimpleDateFormat("yyyy-MM-dd").parse(a);

Date b1 = new SimpleDateFormat("yyyy-MM-dd").parse(b);

//獲取相減後天數

long day = (a1.getTime()-b1.getTime())/(24*60*60*1000);

希望可以幫到你。



第三種  



相隔的天數

Date d1 = new Date();

Date d2 = new Date(2013,10,23,14,15,26);


int days = (int)((d1.getTime() - d2.getTime())/86400000);


System.out.println("間隔天數:"  + days);





第三種方式轉化的時候出了點問題  希望誰能幫我改進下,第一和第二都可以轉換  但要注意第二種時間算出的天數需要自己去區分時間的大小,否則會算出負數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章