java經常使用類之Date類與Calendar類

1、Date類

在JDK1.0中,Date類是惟一的一個表明時間的類,可是因爲Date類不便於實現國際化,因此從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理。程序員

1.使用Date類表明當前系統時間ide

Date date = new Date();
        System.out.println(date);

使用Date類的默認構造方法建立出來的對象就表明當前的時間,因爲Date類覆蓋了toString()方法。因此能夠直接輸出Date類型的對象,顯示的結果以下:設計

Sun Aug 28 10:23:06 CST 2016

在該格式中,Sun表明Sunday(週日),Aug 表明August(八月),28表明288號,CST表明China Standard Time(中國標準時間,也就是北京時間(東八區))。code

2.使用Date類表明指定時間對象

Date date = new Date(2016-1900,8-1,28); 
System.out.println(date);

使用帶參的構造方法,能夠構造指定日期的Date類對象,Date類中年份的參數應該是實際須要表明的年份減去1900,實際須要表明的月份減去1之後的值。顯示結果以下:get

  Sun Aug 28 00:00:00 CST 2016  表明的日期就是2016年8月28號

實際表明的年月日時分秒的日期對象和這個相似。it

3.Date對象和相對時間的互轉table

Date date = new Date(2016-1900,8-1,28);  
long time = 1290876532190L;

將Date類的對象轉換爲相對時間class

long t = date.getTime(); 
System.out.println(t);  //結果是:1472313600000

將相對時間轉換爲Date類的對象date

Date da = new (time); 
System.out.println(da);  //結果是:Sun Aug 28 00:00:00 CST 2016

4.Date對象之間的比較

Date date = new Date(2016-1900,8-1,28);
Date date1 = new Date();

date.compareTo(date1)返回int類型。若是等於0,則date=date1;若是小於0,則date<date1;

使用Date對象中的getTime方法,能夠將Date類的對象轉換爲相對時間,使用Date類的構造方法,能夠將相對時間轉換爲Date類的對象。通過轉換之後,既方便了時間的計算,也使時間顯示比較直觀了。

二:Calendar類

從JDK1.1版本開始,在處理日期和時間時,系統推薦使用Calendar類進行實現(Date的一些方法都過期了)。在設計上,Calendar類的功能要比Date類強大不少,並且在實現方式上也比Date類要複雜一些,下面就介紹一下Calendar類的使用。

Calender類是一個抽象類,在實際使用時實現特定的子類的對象,建立對象的過程對程序員來講是透明的,只須要使用getInstance()方法建立便可。

1.使用Calendar類表明當前時間

Calendar c = Calendar.getInstance(); 
System.out.println(c);  //返回的是一個Calendar對象

因爲Calendar類是抽象類,且Calendar類的構造方法是protected的,因此沒法使用Calendar類的構造方法來建立對象,API中提供了getInstance方法用來建立對象。使用該方法得到的Calendar對象就表明當前的系統時間,因爲Calendar類toString實現的沒有Date類那麼直觀,因此直接輸出Calendar類的對象意義不大。

2.使用Calendar類表明指定的時間

Calendar c1 = Calendar.getInstance();
c1.set(2020,11-1,30);

使用過Calendar類表明特定的時間,須要首先建立一個Calendar的對象,而後在設定該對象中的年月日參數來完成。
set方法的聲明爲:

public final void set(int year,int month,int date)

以上示例代碼設置的時間爲2020年11月30日,其參數的結構和Date類不同。Calendar類中年份的數值直接書寫,月份的值爲實際的月份值減1,日期的值就是實際的日期值。
若是隻設定某個字段某個字段,例如日期的值,則可使用以下set方法:

public void set(int field,int value)

在該方法中,參數field表明要設置的字段的類型,常見類型以下:

屬性 屬性意義
Calendar.YEAR 年份
Calendar.MONTH 月份
Calendar.DATE 日期
Calendar.DAY_OF_MONTH 日期
Calendar.HOUR 12小時制的小時數
Calendar.HOUR_OF_DAY 24小時制的小時數
Calendar.MINUTE 分鐘
Calendar.SECOND
Calendar.DAY_OF_WEEK 星期幾

注意:在Calendar類中,週日是1,週一是2,週二是3,依次類推。
後續的參數value表明設置成的值。例如:c1.set(Calendar.DATE,10);該代碼的做用是將c1對象表明的時間中日期設置爲10號,其它全部的數值會被從新計算,例如星期幾以及對應的相對時間數值等。

3.Calendar對象和相對時間之間的轉換

Calendar c6 = Calendar.getInstance();  
                long t = 1252785271098L;

                //將Calendar對象轉換爲相對時間
                long t1 = c6.getTimeInMillis();

                //將相對時間轉換成Calendar對象
                Calendar c9 = Calendar.getInstance();

                c9.setTimeInMillis(t1);

在轉換時,使用Calendar類中的getTimeInMillis方法能夠將Calendar對象轉換爲相對時間。在將相對時間轉換爲Calendar對象時,首先建立一個Calendar對象,而後再使用Calendar類的setTimeInMillis方法設置時間便可。

4.根據日曆規則,將給定的日曆字段添加或者減小指定的時間值

public abstract void add(int field,int amount)

該方法的做用是在Calendar對象中的某個字段上增長或減小必定的數值,增長是amount的值爲正,減小是amount的值爲負。

例如計算當前時間100天之後的日期,代碼以下:

    Calendar c3 = Calendar.getInstance();
    c3.add(Calendar.DATE,100);
    int year = c3.get(Calendar.YEAR); 
    int month = c3.get(Calendar.MONTH);
    int date  = c3.get(Calendar.DATE);
    System.out.println(year+"年"+month+"月"+date+"日");

這裏add方法是指在c3對象的Calendar.DATE,也就是日期字段上增長100,類內部會從新計算該日期對象中其它各字段的值,從而得到100天之後的日期,例如程序的輸出結果可能爲:2021年3月10日

相關文章
相關標籤/搜索