首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 日期格式化詳解:DateFormat 與 SimpleDateFormat 完整指南

     編輯:Java 相關知識

Java 日期格式化詳解:DateFormat 與 SimpleDateFormat

DateFormat 是格式化和解析「日期/時間」的抽象類,支援 4 種預設風格:SHORT、MEDIUM、LONG、FULL。實際上它是 SimpleDateFormat 的父類,獲取實例時返回的就是 SimpleDateFormat 物件。SimpleDateFormat 才是格式化日期的核心類,允許自定義模式。

DateFormat 常用靜態工廠方法

  • getTimeInstance():僅時間
  • getDateInstance():僅日期
  • getDateTimeInstance():日期+時間
  • 皆可指定風格(SHORT/MEDIUM/LONG/FULL)與 Locale。

DateFormat 實戰測試輸出範例 (Locale=zh_CN)

----getTimeInstance ----
(1.0) Empty Param : 下午4:54:22
(2.1) One Param(s) : 下午4:54
(2.2) One Param(m) : 下午4:54:22
(2.3) One Param(l) : 下午04時54分22秒
(2.4) One Param(f) : 下午04時54分22秒 CST

----getDateInstance ----
(1.0) Empty Param : 2014-1-23
(2.1) One Param(s) : 14-1-23
(2.2) One Param(m) : 2014-1-23
(2.3) One Param(l) : 2014年1月23日
(2.4) One Param(f) : 2014年1月23日 星期四

----getDateTimeInstance ----
(1.0) Empty Param : 2014-1-23 下午4:54:23
(3.4) One Param(f,l): 2014年1月23日 星期四 下午04時54分23秒 CST

SimpleDateFormat 自定義模式完整對照表

字母日期/時間元素表示示例
GEra 標記TextAD
y年Year1996; 96
M月份MonthJuly; Jul; 07
w年內週數Number27
W月內週數Number2
D年內天數Number189
d月內天數Number10
F月內星期Number2
E星期名稱TextTuesday; Tue
aAM/PM 標記TextPM
H小時 (0-23)Number0
k小時 (1-24)Number24
K小時 (0-11, AM/PM)Number0
h小時 (1-12, AM/PM)Number12
m分鐘Number30
s秒Number55
S毫秒Number978
z時區名稱General time zonePacific Standard Time; PST; GMT-08:00
Z時區 RFC 822RFC 822 time zone-0800

模式字母重複次數規則:Text 型 ≥4 用完整形式,否則縮寫;Number 型數字為最小位數,不足補 0;Year 型 2 位截取,否則完整年份。

SimpleDateFormat 常用模式實戰輸出 (2013-09-19 14:22:30)

HH:mm                    14:22
h:mm a                   2:22 下午
HH:mm z                  14:22 CST
HH:mm Z                  14:22 +0800
HH:mm zzzz               14:22 中國標準時間
yyyy-MM-dd               2013-09-19
yyyy-MM-dd HH:mm:ss      2013-09-19 14:22:30
yyyy-MM-dd HH:mm:ss.SSSZ 2013-09-19 14:22:30.000+0800
yyyy-MM-dd'T'HH:mm:ss.SSSZ 2013-09-19T14:22:30.000+0800
EEEE yyyy-MM-dd HH:mm:ss zzzz 星期四 2013-09-19 14:22:30 中國標準時間

重要提醒

  • SimpleDateFormat 非線程安全,建議每個線程建立獨立實例,或使用 ThreadLocal 包裝。
  • Java 8+ 建議使用 java.time.format.DateTimeFormatter(不可變、線程安全)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved