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

 更新时间:2025年09月01日 09:18:30   作者: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.format()

  • 高并发场景:用ThreadLocal或升级到Java 8的DateTimeFormatter

  • 复杂操作:优先选择java.time包(如LocalDateTimeZonedDateTime)。

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

总结 

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

相关文章

  • Java Comparator.comparing比较导致空指针异常的解决

    Java Comparator.comparing比较导致空指针异常的解决

    这篇文章主要介绍了Java Comparator.comparing比较导致空指针异常的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系解析

    Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系解析

    在我们日常的开发中,我们经常会用到Filter和Interceptor,这篇文章主要介绍了Spring中过滤器(Filter)和拦截器(Interceptor)的区别和联系 ,需要的朋友可以参考下
    2022-10-10
  • Java SpringBoot开发小技巧详解

    Java SpringBoot开发小技巧详解

    这篇文章主要介绍了浅谈SpringBoot项目如何让前端开发提高效率(小技巧),主要介绍了Swagger和Nginx提高效率的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • TransmittableThreadLocal通过javaAgent实现线程传递并支持ForkJoin

    TransmittableThreadLocal通过javaAgent实现线程传递并支持ForkJoin

    这篇文章主要介绍了TransmittableThreadLocal通过javaAgent实现线程传递并支持ForkJoin详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Spring超详细讲解AOP面向切面

    Spring超详细讲解AOP面向切面

    面向对象编程是一种编程方式,此编程方式的落地需要使用“类”和 “对象”来实现,所以,面向对象编程其实就是对 “类”和“对象” 的使用,面向切面编程,简单的说,就是动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程
    2022-10-10
  • JVM的垃圾回收机制你了解吗

    JVM的垃圾回收机制你了解吗

    这篇文章主要为大家介绍了JVM的垃圾回收机制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • 解决跨域请求,NG返回403(403并不一定是NG问题)

    解决跨域请求,NG返回403(403并不一定是NG问题)

    这篇文章主要介绍了解决跨域请求,NG返回403(403并不一定是NG问题),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • java的基本数据类型及属性

    java的基本数据类型及属性

    java的基本数据类型及属性,需要的朋友可以可以参考一下
    2013-03-03
  • Springboot在有参构造方法类中使用@Value注解取值

    Springboot在有参构造方法类中使用@Value注解取值

    这篇文章主要介绍了Springboot在有参构造方法类中使用@Value注解取值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • SpringBoot @Configuration与@Bean注解使用介绍

    SpringBoot @Configuration与@Bean注解使用介绍

    这篇文章主要介绍了SpringBoot中的@Configuration与@Bean注解,在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制,只有把这些都搞清楚了,我们在之后使用才会更加得心应手
    2022-10-10

最新评论