java实现Date转换为string的五种常见实现方法

 更新时间:2026年01月27日 08:25:53   作者:悟能不能悟  
这篇文章主要为大家详细介绍了java实现Date转换为string的五种常见实现方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

在Java中将Date转换为String有多种方法,以下是常用的几种方式:

1. 使用 SimpleDateFormat(传统方式,Java 8之前)

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

// 创建Date对象
Date date = new Date();

// 创建SimpleDateFormat对象,指定格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

// 转换为字符串
String dateString = sdf.format(date);
System.out.println(dateString); // 输出:2026-01-26 10:30:45

2. 使用 DateTimeFormatter(Java 8+ 推荐)

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;

// 方法1:Date -> Instant -> LocalDateTime
Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());

// 定义格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateString = localDateTime.format(formatter);
System.out.println(dateString);

// 方法2:更简洁的方式
String formatted = date.toInstant()
    .atZone(ZoneId.systemDefault())
    .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

3. 使用 FastDateFormat(Apache Commons Lang)

import org.apache.commons.lang3.time.FastDateFormat;
import java.util.Date;

FastDateFormat fastDateFormat = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
String dateString = fastDateFormat.format(new Date());

4. 预定义格式示例

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

Date date = new Date();

// 只显示日期
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(dateFormat.format(date)); // 2026-01-26

// 只显示时间
SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
System.out.println(timeFormat.format(date)); // 10:30:45

// 中文格式
SimpleDateFormat chineseFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println(chineseFormat.format(date)); // 2026年01月26日 10时30分45秒

// ISO 8601格式
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
System.out.println(isoFormat.format(date)); // 2026-01-26T10:30:45Z

5. 线程安全的格式化(Java 8+)

import java.time.format.DateTimeFormatter;
import java.util.Date;

// 线程安全的formatter
private static final DateTimeFormatter FORMATTER = 
    DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

public String formatDate(Date date) {
    return date.toInstant()
        .atZone(ZoneId.systemDefault())
        .format(FORMATTER);
}

6. 常用格式模式

符号含义示例
yyyy年份2026
MM月份(两位)01
M月份(一位或两位)1
dd日期(两位)26
d日期(一位或两位)26
HH24小时制小时14
hh12小时制小时02
mm分钟30
ss45
SSS毫秒123
E星期几Mon
a上午/下午PM

推荐方案

Java 8及以上:推荐使用 DateTimeFormatter,线程安全且功能更强大

Java 8以下:使用 SimpleDateFormat,但要注意它不是线程安全的

如果需要频繁格式化,考虑使用线程局部变量(ThreadLocal)包装 SimpleDateFormat,或使用 Apache Commons Lang 的 FastDateFormat

到此这篇关于java实现Date转换为string的五种常见实现方法的文章就介绍到这了,更多相关java Date转string内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring中的SpringApplicationRunListener详细解析

    Spring中的SpringApplicationRunListener详细解析

    这篇文章主要介绍了Spring中的SpringApplicationRunListener详细解析,SpringApplicationRunListener是一个监听SpringApplication中run方法的接口,在项目启动过程的各个阶段进行事件的发布,需要的朋友可以参考下
    2023-11-11
  • 详解Spring MVC自动为对象注入枚举类型

    详解Spring MVC自动为对象注入枚举类型

    本篇文章主要介绍了Spring MVC自动为对象注入枚举类型,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 解析java中This的用法分析

    解析java中This的用法分析

    本篇文章是对java中This的用法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Hadoop中的压缩与解压缩案例详解

    Hadoop中的压缩与解压缩案例详解

    压缩就是通过某种技术(算法)把原始文件变下,相应的解压就是把压缩后的文件变成原始文件,本文给大家分享Hadoop中的压缩知识,感兴趣的朋友跟随小编一起看看吧
    2021-12-12
  • 使用java文件过滤器输出制定格式文件路径的实例代码

    使用java文件过滤器输出制定格式文件路径的实例代码

    这篇文章主要介绍了使用java文件过滤器输出制定格式文件路径的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Apache Ignite 与 Spring Boot 集成详细指南

    Apache Ignite 与 Spring Boot 集成详细指南

    Apache Ignite官方指南详解如何通过Spring Boot Starter扩展实现自动配置,支持厚/轻客户端模式,简化Ignite节点和客户端的部署与管理,提升开发效率和可维护性,接下来通过本文介绍Apache Ignite与Spring Boot 集成详细指南,感兴趣的朋友一起看看吧
    2025-07-07
  • java使用jna调用c#中dll的方法详解

    java使用jna调用c#中dll的方法详解

    前一段时间接了个项目,需要用到第三方提供的C#编写的dll,本身项目是java语言,所以便有了下面这篇文章,本文给大家介绍了关于java中如何使用jna调用c#中dll的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-09-09
  • 关于@CacheEvict无法解决分页缓存清除的解决思路

    关于@CacheEvict无法解决分页缓存清除的解决思路

    这篇文章主要介绍了关于@CacheEvict无法解决分页缓存清除的解决思路,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java统计接口调用频率的五种方案及对比详解

    Java统计接口调用频率的五种方案及对比详解

    这篇文章主要介绍了五种接口调用频率监控方案,包括固定窗口计数器、滑动窗口计数器、AOP透明统计、Redis分布式统计和Micrometer+Prometheus,每种方案都有其优缺点和适用场景,作者还分享了在实际项目中遇到的问题和解决方案,并提供了容量规划建议,需要的朋友可以参考下
    2025-10-10
  • Sentinel核心类之Entry类解读

    Sentinel核心类之Entry类解读

    这篇文章主要介绍了Sentinel核心类之Entry类解读,Sentinel中Entry可以理解为每次进入资源的一个凭证,如果调用SphO.entry()或者SphU.entry()能获取Entry对象,代表获取了凭证,没有被限流,否则抛出一个BlockException,需要的朋友可以参考下
    2023-12-12

最新评论