java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java日期格式化

Java日期格式化实现过程

作者:@zcc@

本文介绍了在Java中处理日期格式yyyyMMddHHmmss的方法,包括使用java.time包(Java8+)和SimpleDateFormat(Java7及以下),详细说明了格式化和解析时间的示例代码,并强调了线程安全和异常处理的重要性,还讨论了常见错误及其解决方法,以及如何生成唯一标识符

在 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");
        // 解析为 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

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");
            // 解析为 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
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

线程安全:

异常处理

4. 常见错误及解决方法

错误 1:格式模式与输入字符串不匹配

错误 2:解析非法日期(如 20250230)

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

yyyyMMddHHmmss 常用于生成唯一标识符(如订单号、文件名)。

可以结合序列号或 UUID:

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

输出示例

订单号: 20250612154603-001

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文