news 2026/4/15 16:44:05

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)

importjava.text.SimpleDateFormat;importjava.util.Date;Datedate=newDate();SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");Stringstr=sdf.format(date);System.out.println(str);// 输出:2026-01-06 14:30:25

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

importjava.time.LocalDateTime;importjava.time.format.DateTimeFormatter;LocalDateTimenow=LocalDateTime.now();DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy年MM月dd日 EEEE HH:mm");Stringstr=now.format(formatter);System.out.println(str);// 输出:2026年01月06日 星期二 14:30
预定义格式(DateTimeFormatter 新 API 提供)

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

DateTimeFormatter.ISO_LOCAL_DATE// 2026-01-06DateTimeFormatter.ISO_LOCAL_TIME// 14:30:25DateTimeFormatter.ISO_LOCAL_DATE_TIME// 2026-01-06T14:30:25DateTimeFormatter.ISO_OFFSET_DATE_TIME// 2026-01-06T14:30:25+08:00DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)// 带本地化星期等
总结建议
  • 日常开发优先使用java.time包(LocalDateTime + DateTimeFormatter),线程安全、API 更清晰。
  • 格式化字符串:最常用的是yyyy-MM-dd HH:mm:ss
  • 时区处理:推荐使用XXXX显示时区,避免歧义。
  • 中文场景:常用yyyy年MM月dd日 HH:mm:ss

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 20:13:36

保姆级教程:Spring AI RAG知识库构建,让你的AI助手“满腹经纶“!

当用户提问:“有哪些优惠券?” 。 RAG 工程会去查询本地向量数据库中的相关数据,然后将这部分数据 用户问题,一起发送给大模型进行处理。 先来看一下效果,如图 加载数据文件到向量数据库中 手动查询向量数据库实现 R…

作者头像 李华
网站建设 2026/4/14 7:46:05

用 Python 编写 K8s 漏洞扫描器,自动发现集群内的配置错误

标签: #Kubernetes #Python #DevSecOps #网络安全 #云原生 #自动化运维🚨 前言:你的集群也许正在“裸奔” 你是否见过这种 YAML 配置? securityContext:privileged: true # 为了省事,直接给特权runAsUser: 0 # 直…

作者头像 李华
网站建设 2026/4/15 13:31:36

L911349010CB 继电器板

L911349010CB 继电器板概述类型:工业继电器控制板功能:通过低电压控制信号驱动高电压或大电流负载用途:实现设备开关控制、自动化逻辑执行或保护回路主要功能开关控制接收来自 PLC、控制器或传感器的低电压信号控制继电器闭合或断开&#xff…

作者头像 李华
网站建设 2026/4/12 23:03:03

天气预报应用为何总是不准?技术解析

为什么天气预报应用如此糟糕?| New Scientist 如果你本周曾晾晒衣物、去海滩游玩或准备烧烤,几乎肯定会先查看天气应用。而你或许对结果并不完全满意。这就引出了一个问题:为什么天气应用如此不靠谱? 即使是像英国雷丁大学的罗布汤…

作者头像 李华