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 |
| a | AM/PM | 下午, PM |
| z | 時區名 | CST, 中國標準時間 |
| Z | 時區偏移 | +0800 |
| G | 紀元 | 公元 |
基準時間:2013-09-19 14:22:30 CST
| 模式 | 輸出 |
|---|---|
| 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 |
| EEEE yyyy-MM-dd HH:mm:ss zzzz | 星期四 2013-09-19 14:22:30 中國標準時間 |
| yyyy-MM-dd'T'HH:mm:ss.SSSZ | 2013-09-19T14:22:30.000+0800 (ISO-8601) |
| yyMMddHHmmssZ | 130919142230+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) { ... }
yyyy-MM-dd'T'HH:mm:ss 中 T 輸出字面 'T'sdf.set2DigitYearStart(new Date(100,0,1)) 解析 2000-2099