java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java格式化date成字符串

java格式化date成字符串的详细方法和示例

作者:leijmdas

在Java编程中,字符串格式化是一项基本且重要的技能,这篇文章主要介绍了java格式化date成字符串的详细方法和示例,文中通过代码 介绍的非常详细,需要的朋友可以参考下

前言

在Java中将java.util.Date对象格式化为字符串,主要使用SimpleDateFormat类(或Java 8及更高版本的DateTimeFormatter)。以下是详细方法和示例:

一、使用SimpleDateFormat(Java 7及以下)

步骤:

  1. 创建SimpleDateFormat对象:指定日期格式模式(如"yyyy-MM-dd HH:mm:ss")。

  2. 调用format()方法:将Date对象转换为字符串。

常用格式符号:

符号含义示例
yyyy四位年份2025
MM两位月份06
dd两位日期24
HH24小时制14
hh12小时制02
mm分钟30
ss45
SSS毫秒789
E星期几Tue
aAM/PM标记PM
z时区CST

代码示例:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        // 创建Date对象(当前时间)
        Date date = new Date();
        
        // 示例1:格式化为"年-月-日 时:分:秒"
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str1 = sdf1.format(date); // 如:2025-06-24 15:30:45
        System.out.println(str1);

        // 示例2:格式化为"月/日/年 时:分 AM/PM"
        SimpleDateFormat sdf2 = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
        String str2 = sdf2.format(date); // 如:06/24/2025 03:30 PM
        System.out.println(str2);

        // 示例3:自定义格式(带星期和时区)
        SimpleDateFormat sdf3 = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z");
        String str3 = sdf3.format(date); // 如:Tue, 24 Jun 2025 15:30:45 CST
        System.out.println(str3);
    }
}

二、注意事项

  1. 线程安全问题

    SimpleDateFormat非线程安全。多线程环境下建议:

    • 每次创建新实例(性能较低),或

    • 使用ThreadLocal封装实例。

      private static final ThreadLocal<SimpleDateFormat> threadSafeFormat = 
        ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd"));
      String formattedDate = threadSafeFormat.get().format(date);
      
  2. 异常处理

    解析字符串时需捕获ParseException,但格式化操作一般无需异常处理。

  3. 时区设置

    默认使用系统时区。可通过setTimeZone()修改:

    sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
    

三、Java 8+ 推荐方案(DateTimeFormatter)

Java 8引入的java.time.format.DateTimeFormatter线程安全且更灵活:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        // 格式化为字符串
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDate = now.format(formatter); // 如:2025-06-24 15:30:45
        System.out.println(formattedDate);
    }
}

四、总结

方法适用场景线程安全
SimpleDateFormatJava 7及以下❌ 否
DateTimeFormatterJava 8+✅ 是

可通过在线工具(如 SimpleDateFormat Tester)验证格式模式是否正确。

总结 

到此这篇关于java格式化date成字符串的文章就介绍到这了,更多相关java格式化date成字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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