Java常用的日期和时间格式化转换符

Java 中常用的日期和时间格式化转换符大全

Java 中日期和时间的格式化主要通过以下两个类实现:

  • 旧 API(Java 8 之前):java.text.SimpleDateFormat
  • 新 API(Java 8+ 推荐):java.time.format.DateTimeFormatter

两者使用的格式化转换符(pattern letters)基本相同,下面是常用转换符的详细表格。

常用转换符表格(按字母排序)

转换符含义示例输出(假设日期:2026-01-06 14:30:25,周二)说明
G纪元(Era)AD公元前/后
y年(年份)2026(yy → 26)yy 为两位年份
Y周所在年(Week year)2026很少用
M月份01(MM)
1(M)
January(MMMM)
Jan(MMM)
M 个数决定显示方式
L独立月份(Stand-alone month)与 M 类似,但用于某些语言的独立形式很少用
d月中天(Day of month)06(dd)
6(d)
D年中天(Day of year)0061月1日为001
E星期(Day of week)Tuesday(EEEE)
Tue(EEE)
E 个数决定长短
u周中天数字(1=周一)2ISO 标准
a上/下午标记PM
H24小时制小时(0-23)14
k24小时制小时(1-24)14
K12小时制小时(0-11)2
h12小时制小时(1-12)2
m分钟30
s25
S毫秒000(SSS)
0(S)
S 个数决定位数
z时区(通用)GMT+08:00
Z时区(RFC 822)+0800
X时区(ISO 8601)+08
+0800(XX)
Z(X)
推荐使用
转义单引号用于输出文字,如 yyyy’年’单引号需成对 ”

常见格式化模式示例

模式输出示例说明
yyyy-MM-dd2026-01-06最常见的日期格式(ISO)
yyyy/MM/dd2026/01/06
yyyy年MM月dd日2026年01月06日中文常见
yyyy-MM-dd HH:mm:ss2026-01-06 14:30:25完整日期时间(24小时)
yyyy-MM-dd hh:mm:ss a2026-01-06 02:30:25 PM12小时带上下午
EEEE yyyy-MM-ddTuesday 2026-01-06带星期
yyyy-MM-dd’T’HH:mm:ss2026-01-06T14:30:25ISO 8601 基本格式
yyyy-MM-dd HH:mm:ss.SSS2026-01-06 14:30:25.000带毫秒
yyyy-MM-dd HH:mm:ss XXX2026-01-06 14:30:25 +08:00带时区(推荐)

使用示例

1. 使用 SimpleDateFormat(旧 API)

import java.text.SimpleDateFormat;
import java.util.Date;

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date);
System.out.println(str);  // 输出:2026-01-06 14:30:25

2. 使用 DateTimeFormatter(新 API,推荐)

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 EEEE HH:mm");
String str = now.format(formatter);
System.out.println(str);  // 输出:2026年01月06日 星期二 14:30

预定义格式(DateTimeFormatter 新 API 提供)

Java 8+ 的 DateTimeFormatter 还提供了常用预定义格式,无需手动写 pattern:

DateTimeFormatter.ISO_LOCAL_DATE          // 2026-01-06
DateTimeFormatter.ISO_LOCAL_TIME          // 14:30:25
DateTimeFormatter.ISO_LOCAL_DATE_TIME     // 2026-01-06T14:30:25
DateTimeFormatter.ISO_OFFSET_DATE_TIME    // 2026-01-06T14:30:25+08:00
DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)  // 带本地化星期等

总结建议

  • 日常开发优先使用 java.time 包(LocalDateTime + DateTimeFormatter),线程安全、API 更清晰。
  • 格式化字符串:最常用的是 yyyy-MM-dd HH:mm:ss
  • 时区处理:推荐使用 XXXX 显示时区,避免歧义。
  • 中文场景:常用 yyyy年MM月dd日 HH:mm:ss

掌握这些转换符,就能灵活处理 Java 中几乎所有日期时间格式化需求!

文章已创建 3707

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部