Java:日期時間格式化輸出入處理:Date、Calendar、SimpleDateFormat
在使用Java的這些日子裡,
Java中的日期時間格式處理總是讓我覺得有些混亂不夠直覺。
例如我想要知道2009/1/1是星期幾,
那就要經過不少步的處理轉換才能得知正確的答案。
程式如下:
其中第一種方式可以接受我們常用的日期格式 2009/1/1 或 2009/01/01,
第二種看起來比較簡便但就必須自己把年月日分開再輸入呼叫程式,
其中年和日可以直接輸入2009和1,但月份的地方要特別注意,
最好使用 Calendar.月份的方式輸入,因Calendar.JANUARY的 int值是 0而非1。
若直接以月份輸入的話會出錯!
(2011.11.24更新)
在程式的最下面補充如何格式化印出現在的時間。
只要先用 Date() 取得現在的日期時間,
再用SimpleDateFormat格式化即可。
而 SimpleDateFormat可以讓我們選擇日期輸出的格式可以參考以下的表格:
(來源為:http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html)
另外更多關於日期時間的處理可以看這兩篇:
1. java日期加减法 (也有繁體中文版本)
2. 藍色小鋪的討論串
關鍵字:Date, Calendar, DateFormat, SimpleDateFormat, parse, Java, 時間, 處理, 格式, 轉換,
參考資料:
1. Java Api:SimpleDateFormat
2. java日期加减法、繁體中文版本
3. 藍色小鋪的討論串
Java中的日期時間格式處理總是讓我覺得有些混亂不夠直覺。
例如我想要知道2009/1/1是星期幾,
那就要經過不少步的處理轉換才能得知正確的答案。
程式如下:
其中第一種方式可以接受我們常用的日期格式 2009/1/1 或 2009/01/01,
第二種看起來比較簡便但就必須自己把年月日分開再輸入呼叫程式,
其中年和日可以直接輸入2009和1,但月份的地方要特別注意,
最好使用 Calendar.月份的方式輸入,因Calendar.JANUARY的 int值是 0而非1。
若直接以月份輸入的話會出錯!
(2011.11.24更新)
在程式的最下面補充如何格式化印出現在的時間。
只要先用 Date() 取得現在的日期時間,
再用SimpleDateFormat格式化即可。
1 package demo; 2 3 import java.text.DateFormat; 4 import java.text.ParseException; 5 import java.text.SimpleDateFormat; 6 import java.util.Calendar; 7 import java.util.Date; 8 9 public class SimpleDateFormatDemo { 10 11 public static void main(String[] args) throws ParseException { 12 13 // 準備輸出的格式,如:星期四 2009/01/01 14 SimpleDateFormat sdf = new SimpleDateFormat("E yyyy/MM/dd"); 15 16 // 利用 DateFormat 來parse 日期的字串 17 DateFormat df = DateFormat.getDateInstance(); 18 Date date = df.parse("2009/1/1"); 19 Calendar calendar = Calendar.getInstance(); 20 calendar.setTime(date); 21 System.out.println(sdf.format(calendar.getTime())); 22 23 // 利用 set 直接輸入日期 24 calendar.set(2009, Calendar.JANUARY, 1); 25 System.out.println(sdf.format(calendar.getTime())); 26 27 // 直接格式化輸出現在時間的方法 28 SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy/MM/dd 29 HH:mm:ss.SSS"); 30 Date current = new Date(); 31 System.out.println(sdFormat.format(current)); 32 } 33 } 輸出結果為: 星期四 2009/01/01 2011/11/24 22:38:54.631
而 SimpleDateFormat可以讓我們選擇日期輸出的格式可以參考以下的表格:
Date and Time Pattern | Result |
---|---|
"yyyy.MM.dd G 'at' HH:mm:ss z" | 2001.07.04 AD at 12:08:56 PDT |
"EEE, MMM d, ''yy" | Wed, Jul 4, '01 |
"h:mm a" | 12:08 PM |
"hh 'o''clock' a, zzzz" | 12 o'clock PM, Pacific Daylight Time |
"K:mm a, z" | 0:08 PM, PDT |
"yyyyy.MMMMM.dd GGG hh:mm aaa" | 02001.July.04 AD 12:08 PM |
"EEE, d MMM yyyy HH:mm:ss Z" | Wed, 4 Jul 2001 12:08:56 -0700 |
"yyMMddHHmmssZ" | 010704120856-0700 |
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" | 2001-07-04T12:08:56.235-0700 |
另外更多關於日期時間的處理可以看這兩篇:
1. java日期加减法 (也有繁體中文版本)
2. 藍色小鋪的討論串
關鍵字:Date, Calendar, DateFormat, SimpleDateFormat, parse, Java, 時間, 處理, 格式, 轉換,
參考資料:
1. Java Api:SimpleDateFormat
2. java日期加减法、繁體中文版本
3. 藍色小鋪的討論串