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成字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Lambda表达式的方法引用和构造器引用简的单示例

    关于Lambda表达式的方法引用和构造器引用简的单示例

    这篇文章主要介绍了关于Lambda表达式的方法引用和构造器引用简的单示例,方法引用与构造器引用可以使 Lambda 表达式的代码块更加简洁<BR>,需要的朋友可以参考下
    2023-04-04
  • java多线程批量拆分List导入数据库的实现过程

    java多线程批量拆分List导入数据库的实现过程

    这篇文章主要给大家介绍了关于java多线程批量拆分List导入数据库的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-10-10
  • 解决java web应用线上系统偶发宕机的情况

    解决java web应用线上系统偶发宕机的情况

    这篇文章主要介绍了解决java web应用线上系统偶发宕机的情况,具有好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • dubbo服务引用之创建Invoker流程详解

    dubbo服务引用之创建Invoker流程详解

    这篇文章主要为大家介绍了dubbo服务引用二之创建Invoker流程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 教你在Spring Boot微服务中集成gRPC通讯的方法

    教你在Spring Boot微服务中集成gRPC通讯的方法

    这篇文章主要介绍了教你在Spring Boot微服务中集成gRPC通讯的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • JAVA关键字及作用详解

    JAVA关键字及作用详解

    本文主要介绍了Java关键字及作用,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 远程调用@FeignClient注解属性使用详解

    远程调用@FeignClient注解属性使用详解

    这篇文章主要为大家介绍了远程调用@FeignClient注解属性使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Java中Map.getOrDefault()方法举例详解

    Java中Map.getOrDefault()方法举例详解

    这篇文章主要介绍了Java 8中Map接口的getOrDefault()方法,该方法在获取键值对时,如果键不存在则返回默认值,文中通过一个统计网站用户点击次数的应用场景,详细展示了getOrDefault()的用法,需要的朋友可以参考下
    2025-02-02
  • 详解SpringBoot注入数据的方式

    详解SpringBoot注入数据的方式

    这篇文章主要介绍了详解SpringBoot注入数据的方式,详细的介绍了几种注入方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • java线程的中断和同步问题的实现

    java线程的中断和同步问题的实现

    本文主要介绍了java线程的中断和同步问题的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07

最新评论