2016年3月5日 星期六

Date Calendar SimpleDateFormat使用簡介

首先打一下預防針

這篇介紹的很精簡,而且很多都是腦補,不太參考正規的官方文件
這幾個類別應該還有其他應用的地方,有錯請指正


先介紹 Date
(是java.util.Date 不是 java.sql.Date,但目測功能應該大同小異,還沒用過不確定

這個類別雖然英文字典說叫做"日期",但其實裡面也記錄著比日還小的時、分、秒

所以Date這個類別的意義可以理解為

時間上的某一瞬間

所以理所當然就包含著這個瞬間的年、月、日、時、分、秒、毫秒這些時間資訊


常用方法 :

1. new Date() :  創一個Date實例,其內部時間資訊為創建的瞬間
比如說執行到new Date()的時候是2000/12/1 23:59:59 0ms 那這個Date實例就記錄這個瞬間

2. new Date(Long s) : 距離 1970/1/1 0點0分0秒 s個毫秒數的瞬間
比如說new Date(1000),那這個Date實例就記錄著1970/1/1 0點0分1秒

3.Date().toLocaleString() : 直接用預設的樣式輸出該Date實例的時間資訊


Calendar

我覺得這個類別的意義跟Date差不多

都是用來代表時間上的一個瞬間

不過在運算上比Date方便許多

可以針對各個時間欄位(年月日時分秒星期幾等等)做加減,而且在邊際處理(比如某月最後一號加1)上處理得很完整

但相對的,缺點就是比較耗資源

所以可以得出一個結論:

如果只是需要一個表示時間的東西或是比較時間先後,用Date()  甚至 System.currentTimeMillis() 就好,這兩種方式所耗的資源差不多少

如果要做時間上的計算,用Calendar

不過除了運算方便不知道還有沒有比Date好用的地方,還沒深入去看

常用方法

1.Calendar.getInstance() : 取得一個Calendar實例,時間資訊為創建的瞬間
(Calendar沒有建構子,就用這個靜態方法創建

2.Calendar.set(int field,int value) : 更改指定時間資訊的值
比如說 set(Calendar.MINUTE,2)就把分設為2

3.Calendar.add(int field,int value): 增加指定時間資訊的值,要減少的話value用負的

4.Calendar.get(int field)

5.Calendar.getTime() : Calendar轉成Date

6.Calendar.setTime(Date) : Date轉成Calendar



SimpleDateFormat

用來將日期以特定的樣式輸出

比如一個Date裡面時間是 2015年7月20

不同的樣式輸出可以是

2015.7.20

2015/7/20

20/7/2015

等等

想怎麼安排都可以



常用方法:

1.new SimpleDateFormat(String pattern)

SimpleDateFormat的一個建構子

參數pattern是用來設定樣式的字串

樣式的代表字母可參照官方文件,比如 :

"西元 y.M.d E a h:m:s"

y代表年    M代表月   d代表日    E代表星期幾   a代表上/下午  h代表小時  m代表分  s代表秒

所以依照上面的樣式字串

到最後會輸出

西元 2016.3.8 星期日 下午 8:28:39  (←現在時間



2.SimpleDateFormat.format(Date)

將Date物件的時間資料以此SimpleDateFormat指定的樣式進行輸出
比如
new SimpleDateFormat("西元 y.M.d E a h:m:s").format(new Date());
就是以上述樣式輸出現在時間

3.SimpleDateFormat.getInstance()預設的樣式
                                  .getDateInstance()預設的樣式,只有日期
                                  .getDateTimeInstance()預設的樣式,含日期和時間


                                  

沒有留言:

張貼留言