当前位置: 首页 > web >正文

Java日期格式化

在 Java 中处理日期格式 yyyyMMddHHmmss(即年-月-日-时-分-秒,无分隔符),可以通过 java.time 包(Java 8+)或 SimpleDateFormat(Java 7 及以下)实现。以下是详细说明和示例代码:


1. Java 8+:使用 java.time

推荐使用 Java 8 的 java.time 包,它更现代、线程安全且功能更强大。

1.1 格式化当前时间为 yyyyMMddHHmmss
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class DateFormatter {public static void main(String[] args) {// 当前时间LocalDateTime now = LocalDateTime.now();// 定义格式DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");// 格式化为字符串String formattedTime = now.format(formatter);System.out.println("当前时间(yyyyMMddHHmmss): " + formattedTime);}
}

输出示例

当前时间(yyyyMMddHHmmss): 20250612154603

1.2 将 yyyyMMddHHmmss 字符串解析为 LocalDateTime
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class DateFormatter {public static void main(String[] args) {// 输入字符串String input = "20250612154603";// 定义解析格式DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");// 解析为 LocalDateTimeLocalDateTime dateTime = LocalDateTime.parse(input, formatter);System.out.println("解析后的日期时间: " + dateTime);}
}

输出示例

解析后的日期时间: 2025-06-12T15:46:03

2. Java 7 及以下:使用 SimpleDateFormat

对于旧版 Java,可以使用 SimpleDateFormat,但需注意线程安全问题。

2.1 格式化当前时间为 yyyyMMddHHmmss
import java.text.SimpleDateFormat;
import java.util.Date;public class DateFormatter {public static void main(String[] args) {// 当前时间Date now = new Date();// 定义格式SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");// 格式化为字符串String formattedTime = formatter.format(now);System.out.println("当前时间(yyyyMMddHHmmss): " + formattedTime);}
}

输出示例

当前时间(yyyyMMddHHmmss): 20250612154603

2.2 将 yyyyMMddHHmmss 字符串解析为 Date
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateFormatter {public static void main(String[] args) {try {// 输入字符串String input = "20250612154603";// 定义解析格式SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");// 解析为 DateDate date = formatter.parse(input);System.out.println("解析后的日期时间: " + date);} catch (ParseException e) {e.printStackTrace();}}
}

输出示例

解析后的日期时间: Wed Jun 12 15:46:03 CST 2025

3. 注意事项

符号含义示例
yyyy四位数的年份2025
YYYYISO 周历年 2024(可能跨年)谨慎使用,仅用于周相关场景
MM两位数的月份(01-12)06
dd两位数的日期(01-31)12
HH24小时制的小时(00-23)15
hh12小时制的小时(01-12)15
mm分钟(00-59)49
ss秒(00-59)33
SSS毫秒(000-999)123
  1. 线程安全

    • SimpleDateFormat 不是线程安全的,在多线程环境中需每次创建新实例或使用 synchronized
    • DateTimeFormatter 是线程安全的,推荐优先使用。
  2. 异常处理

    • 使用 SimpleDateFormat.parse() 时需捕获 ParseException

4. 常见错误及解决方法

错误 1:格式模式与输入字符串不匹配
  • 原因:输入字符串的格式与定义的 DateTimeFormatterSimpleDateFormat 不一致。
  • 解决:检查格式模式是否正确,例如 yyyyMMddHHmmss 不能用于 2025-06-12 15:46:03
错误 2:解析非法日期(如 20250230)
  • 原因:输入字符串包含非法日期(如 2 月 30 日)。
  • 解决:捕获异常并处理非法输入。

5. 扩展:生成唯一标识符

yyyyMMddHHmmss 常用于生成唯一标识符(如订单号、文件名)。可以结合序列号或 UUID:

// 示例:生成订单号
String orderNumber = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "-001";
System.out.println("订单号: " + orderNumber);

输出示例

订单号: 20250612154603-001

http://www.xdnf.cn/news/13838.html

相关文章:

  • Swift 解法详解:如何在二叉树中寻找最长连续序列
  • NAS文件共享、PACS影像存储,速率提升400%?
  • PostgreSQL认证怎么选?PGCP中级认证、PGCM高级认证
  • 基于 Redis 的幂等性设计:SpringBoot @Async 在高并发 MySQL 日志存储中的应用
  • Vue3+TypeScript实现迭代器模式
  • FOC电机三环控制
  • aws s3 sdk c++使用指南、适配阿里云oss和aws
  • 「Java EE开发指南」如何用MyEclipse创建一个WEB项目?(一)
  • DDcGAN_codes
  • 【python】执行deactivate没有关闭虚拟环境
  • 交易所 java, web3 交易所简易模块
  • [SKE]CPU 与 GPU 之间数据加密传输的认证与异常处理
  • 【线程与线程池】线程数设置(四)
  • 线程池启动报null :Caused by: java.lang.IllegalArgumentException: null
  • 每日学习一道数模题-2024国赛B题-生产过程中的决策问题
  • ViT架构所需的大型训练集
  • 在 IntelliJ IDEA 中运行时出现“Log already in use? tmlog in ./“
  • Python数据可视化艺术:社交网络关系图制作
  • parquet批量读取图片文件示例
  • 树莓派5 ubuntu 24.04 docker配置镜像Docker pull时报错:https://registry-1.docker.io/v2/
  • 机器学习与深度学习21-信息论
  • 项目名称:基于计算机视觉的夜间目标检测系统
  • map与set的模拟实现
  • ABAP零碎记录
  • 事件(Event)
  • 56、原生组件注入-原生注解与Spring方式注入
  • 录制mp4 rospy
  • 数字人分身系统源码开发功能深度解析
  • 基于算力魔方与PP-OCRv5的OpenVINO智能文档识别方案
  • CSS实现元素撑满剩余空间的5种方法