Java日期格式化

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


1. Java 8+:使用 java.time

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

1.1 格式化当前时间为 yyyyMMddHHmmss
java 复制代码
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
java 复制代码
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");
        // 解析为 LocalDateTime
        LocalDateTime dateTime = LocalDateTime.parse(input, formatter);
        System.out.println("解析后的日期时间: " + dateTime);
    }
}

输出示例

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

2. Java 7 及以下:使用 SimpleDateFormat

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

2.1 格式化当前时间为 yyyyMMddHHmmss
java 复制代码
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
java 复制代码
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");
            // 解析为 Date
            Date date = formatter.parse(input);
            System.out.println("解析后的日期时间: " + date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

输出示例

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

3. 注意事项

符号 含义 示例
yyyy 四位数的年份 2025
YYYY ISO 周历年 2024(可能跨年) 谨慎使用,仅用于周相关场景
MM 两位数的月份(01-12) 06
dd 两位数的日期(01-31) 12
HH 24小时制的小时(00-23) 15
hh 12小时制的小时(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:

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

输出示例

复制代码
订单号: 20250612154603-001

相关推荐
崎岖Qiu18 小时前
【设计模式笔记06】:单一职责原则
java·笔记·设计模式·单一职责原则
Hello.Reader18 小时前
Flink ExecutionConfig 实战并行度、序列化、对象重用与全局参数
java·大数据·flink
熊小猿19 小时前
在 Spring Boot 项目中使用分页插件的两种常见方式
java·spring boot·后端
paopaokaka_luck19 小时前
基于SpringBoot+Vue的助农扶贫平台(AI问答、WebSocket实时聊天、快递物流API、协同过滤算法、Echarts图形化分析、分享链接到微博)
java·vue.js·spring boot·后端·websocket·spring
老华带你飞19 小时前
机器人信息|基于Springboot的机器人门户展示系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·机器人·论文·毕设·机器人门户展示系统
notion202520 小时前
Adobe Lightroom Classic下载与安装教程(附安装包) 2025最新版详细图文安装教程
java·数据库·其他·adobe
初见无风20 小时前
2.5 Lua代码中string类型常用API
开发语言·lua·lua5.4
做运维的阿瑞20 小时前
用 Python 构建稳健的数据分析流水线
开发语言·python·数据分析
左师佑图20 小时前
综合案例:Python 数据处理——从Excel文件到数据分析
开发语言·python·数据分析·excel·pandas
rengang6620 小时前
351-Spring AI Alibaba Dashscope 多模型示例
java·人工智能·spring·多模态·spring ai·ai应用编程