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

Java 時間處理系列 (5):SimpleDateFormat 格式化與解析大全

     編輯:Java 相關知識

SimpleDateFormat 定位

java.text.SimpleDateFormat 是 非線程安全 的日期格式化/解析工具,支持自定義模式,支撐 Date → String 格式化與 String → Date 解析雙向操作。

常用構造與核心方法

SimpleDateFormat(String pattern)           // 指定模式
SimpleDateFormat(String pattern, Locale locale) // 指定模式與區域
format(Date date) → String                  // 格式化
parse(String source) → Date                 // 解析 (拋出 ParseException)

線程安全警告:請勿將實例作為靜態字段共享。每線程創建實例,或使用 ThreadLocal、DateTimeFormatter (Java 8+)。

模式字母完整對照表

模式字母表

關鍵字母:

字母含義示例
y年2013, 13
M月09, 9, Sep, September
d日19
H時 (0-23)14
h時 (1-12)02
m分22
s秒30
S毫秒000
E星期星期四, Thu
aAM/PM下午, PM
z時區名CST, 中國標準時間
Z時區偏移+0800
G紀元公元

重複次數語義

  • 文本類:≥4 全稱 (September),≤3 縮寫 (Sep)
  • 數字類:次數 = 最小位數,不足補 0 (yy=13, yyyy=2013)
  • 年份特例:yy 解析為當前世紀 ±80 年窗口 (1997 年創建實例解析 12 → 2012)

20+ 實戰模式示例

基準時間:2013-09-19 14:22:30 CST

模式輸出
HH:mm14:22
h:mm a2:22 下午
HH:mm z14:22 CST
HH:mm Z14:22 +0800
HH:mm zzzz14:22 中國標準時間
yyyy-MM-dd2013-09-19
yyyy-MM-dd HH:mm:ss2013-09-19 14:22:30
EEEE yyyy-MM-dd HH:mm:ss zzzz星期四 2013-09-19 14:22:30 中國標準時間
yyyy-MM-dd'T'HH:mm:ss.SSSZ2013-09-19T14:22:30.000+0800 (ISO-8601)
yyMMddHHmmssZ130919142230+0800 (緊湊時間戳)

解析示例

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2023-12-25 08:30:00"); // 正確解析
// 異常處理
try { sdf.parse("invalid"); } catch (ParseException e) { ... }

進階技巧

  1. 單引號轉義字面字符:yyyy-MM-dd'T'HH:mm:ss 中 T 輸出字面 'T'
  2. 設置兩位年份起始窗口:sdf.set2DigitYearStart(new Date(100,0,1)) 解析 2000-2099
  3. 自定義 DateFormatSymbols:替換月份名、星期名、AM/PM 等本地化數據
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved