java中和時間日期相關的類System,Date,SimpleDateFormat,DateFormat,Calender類的常用方法以及聯繫(轉換)

    java中和時間日期相關的類有不少,之前系統的學習過,但是由於不經常用容易忘記,今天決定帶着源碼,用相對容易理解的表達,梳理一遍.

 System類

    此類中的currentTimeMillis方法和時間有關,此方法返回的是系統的當前時間相對於1970-1-1 00:00:00(協調世界時)的毫秒值,返回是數據類型是long,具體的看下面的代碼:


Date類

    類Date表示特定的瞬間,精確到毫秒。此類中的方法有很多,不過有很多都是過時的方法,所有常用的方法不多.
無參構造Date()
    
創建Date對象並初始化此對象,以表示創建它的系統時間(精確到毫秒)。這個方法底層就是調用的的System.currentTimeMillis方法

有參構造Date(long date)

    分配Date對象並初始化此對象,以表示自從標準基準時間(稱爲“曆元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以來的指定毫秒數。說白了就是用一個毫秒值,創建一個相對於1970年1月1日 00:00:00(GMT)的Date對象
方法String toLocaleString()
 
  由於Date類 重寫的toString方法對於中國人來說看着不習慣,所以我們在輸出Date對象的時候一般使用此方法.

方法void setTiem()
    設置此Date對象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以後time毫秒的時間點。

    不管date對象之前是表示的什麼時間,最後會以最後一次操作爲準.這裏設置的毫秒值爲0,打印出來卻是1970-1-1 8:00:00,是因爲時區的問題.

    如果設置爲負數,就是相對於1970 年 1 月 1 日 00:00:00 GMT 這個時間之前.
方法 long getTime()
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以來此 Date 對象表示的毫秒數。

    

DateFormatSimpleDateFormat
    SimpleDateFormat
是繼承的DataFormat,他們是java.text包下的類(text包下的大部分類都是用於格式化),DateFormat是一個抽象類,所以我們在使用它的非靜態方法的時候一般是使用它的子類對象,也就是SimpleDateFormat類的對象,他們的作用就是格式化和解析日期的具體類.常用的方法有兩個,都是非靜態的.
方法public String format(Date date)
   
作用:將一個 Date 格式化爲日期/時間字符串,其實從上面的例子可以發現,即使使用了Date類過時的toLocalString方法有很多時候也還是不能滿足我們的需要,所以就有了format方法,他可以自定義自己的想要的格式來輸出Date對象,輸出字符串的形式取決於構造SimpleDateFormat對象的時候指定的格式.當然我們在API中也可以看到:

例子:
這個構造方法裏面的yyyy-MM-dd 其實可以這樣記憶"4個小姨,兩個大妹妹和一個小弟弟"
方法public Date parse(String string)
    這裏psrse就是解析的意思,方法作用是從給定字符串的開始解析文本,以生成一個日期對象。當然這個格式還是要和構造SimpleDateFormat對象的時候一致.
例子:
Calendar
   
calendar是日曆的意思,爲操作年月日時提供一些方法.在對日期做加減時或者靈活的獲取日期中的某個字段用此類比較合適.他是一個抽象類,有個getInstance方法類獲得一個對象.這個類裏面還有很多見名知意的屬性:

這些屬性都是 static final修飾的,每個字段都有具體的常量值,常用的方法有:
方法 int get(int field)
    返回指定日曆字段(field)的值.
例子:獲得當前年份的值:

獲取到當前月份值:

這裏需要說明一下,我寫這個的時候其實是5月,打印出來的卻是4月,是因爲1月是值其實是0,這個用到的時候需要注意下.
方法 void set(int field, int value)
    作用:給給定的日曆字段(field)賦值
    例子:設置年份的值
    
方法 add(int field, int value)
   
作用:根據日曆的規則,爲給定的日曆字段添加或減去指定的時間量。
    
方法Date getTime()
    返回一個方法調用對象(Calendar對象)的時間值的Date對象,這個方法能夠完成CalendarDate的轉換
    


    

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