最常用标准24小时制格式为new simpledateformat("yyyy-mm-dd hh:mm:ss"),需注意大小写敏感、严格模式防非法日期,且该类非线程安全,推荐每次新建实例或改用java 8+的datetimeformatter。

直接用 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 就行,这是最常用、最标准的 24 小时制年月日时分秒格式。
基础配置写法
创建实例时传入对应模式字符串即可:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");- 注意:字母大小写敏感 —— yyyy(四位年)、MM(两位月,大写)、dd(两位日)、HH(24小时制小时,00–23)、mm(分钟)、ss(秒)
- 不要写成
yy-MM-dd hh:mm:ss(yy是两位年,hh是12小时制,易出错)
格式化当前时间示例
把 Date 对象转成字符串:
Date now = new Date();String result = sdf.format(now);- 输出类似:2026-07-13 18:47:32
解析字符串为 Date 的注意事项
反向操作(字符串 → Date)必须严格匹配格式,建议启用严格模式:
-
sdf.setLenient(false);—— 禁用宽松解析,避免 "2026-02-30" 这类非法日期被强行转成有效日期 - 必须用 try-catch 捕获
ParseException - 例如:
sdf.parse("2026-07-13 18:47:32")成功;"2026/07/13 18:47:32"会抛异常(斜杠不匹配)
线程安全提醒
SimpleDateFormat 不是线程安全的,多线程共用同一实例会导致格式错乱或解析异常:
- 推荐方式:每次使用都新建实例(适合低频调用)
- 进阶方式:用
ThreadLocal<simpledateformat></simpledateformat>管理(如 Web 应用中) - 更现代方案:Java 8+ 优先用
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"),它天生线程安全











