杰瑞科技汇

Java日期如何转字符串?

在Java中,将java.util.Date对象转换为String字符串有多种方法,以下是几种常见的实现方式,包括不同版本的Java(Java 8之前和之后)的推荐做法。

Java日期如何转字符串?-图1
(图片来源网络,侵删)

使用 SimpleDateFormat(Java 8 之前)

SimpleDateFormat 是最传统的方式,可以自定义日期格式。

示例代码

import java.text.SimpleDateFormat;
import java.util.Date;
public class DateToString {
    public static void main(String[] args) {
        Date date = new Date(); // 获取当前时间
        // 定义日期格式(yyyy-MM-dd HH:mm:ss)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 将Date转换为String
        String dateString = sdf.format(date);
        System.out.println("Formatted Date: " + dateString);
        // 其他格式示例
        SimpleDateFormat sdf2 = new SimpleDateFormat("MM/dd/yyyy");
        String dateString2 = sdf2.format(date);
        System.out.println("Formatted Date (US): " + dateString2);
    }
}

常用格式字符

符号 含义 示例(2025-10-05 14:30:00)
yyyy 4位年份 2025
MM 2位月份(01-12) 10
dd 2位日期(01-31) 05
HH 24小时制(00-23) 14
mm 分钟(00-59) 30
ss 秒(00-59) 00
a 上午/下午标记 PM

使用 DateTimeFormatter(Java 8+ 推荐)

Java 8 引入了 java.time 包,推荐使用 LocalDateTime + DateTimeFormatter 来处理日期时间。

示例代码

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateToStringJava8 {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now(); // 获取当前时间
        // 定义日期格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 将LocalDateTime转换为String
        String formattedDate = now.format(formatter);
        System.out.println("Formatted Date: " + formattedDate);
        // 其他格式示例
        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm a");
        String formattedDate2 = now.format(formatter2);
        System.out.println("Formatted Date (US): " + formattedDate2);
    }
}

java.time 常用类

说明
LocalDate 仅日期(年月日)
LocalTime 仅时间(时分秒)
LocalDateTime 日期+时间
ZonedDateTime 带时区的日期时间

java.util.Date 转换为 java.time(Java 8+)

如果已有 java.util.Date 对象,可以先转换为 java.time 类型,再格式化。

示例代码

import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class DateToStringConvert {
    public static void main(String[] args) {
        Date oldDate = new Date(); // 旧的Date对象
        // 1. 转换为Instant
        Instant instant = oldDate.toInstant();
        // 2. 转换为LocalDateTime(指定时区)
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        // 3. 格式化输出
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDate = localDateTime.format(formatter);
        System.out.println("Converted Date: " + formattedDate);
    }
}

使用 toString() 方法(默认格式)

直接调用 DatetoString() 方法,输出默认格式(英文):

Java日期如何转字符串?-图2
(图片来源网络,侵删)
Date date = new Date();
System.out.println(date.toString()); // 输出类似: Wed Oct 05 14:30:00 CST 2025

使用第三方库(如 Apache Commons Lang)

如果项目中已使用 Apache Commons Lang,可以用 FastDateFormat(线程安全的 SimpleDateFormat 替代品):

import org.apache.commons.lang3.time.FastDateFormat;
public class DateToStringApache {
    public static void main(String[] args) {
        Date date = new Date();
        FastDateFormat formatter = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
        String formattedDate = formatter.format(date);
        System.out.println("Formatted Date: " + formattedDate);
    }
}

方法 适用场景 线程安全 备注
SimpleDateFormat Java 8 之前 ❌ 不安全 需手动处理线程问题
DateTimeFormatter Java 8+ 推荐 ✅ 安全 现代、功能强大
Date.toString() 快速输出默认格式 ✅ 安全 格式固定(英文)
Apache Commons Lang 已使用该库的项目 ✅ 安全 替代 SimpleDateFormat 的线程安全版本

推荐做法:

  • Java 8+:优先使用 java.time 包(LocalDateTime + DateTimeFormatter)。
  • Java 8 之前:使用 SimpleDateFormat,但需注意线程安全(如每次新建实例或用 ThreadLocal)。
分享:
扫描分享到社交APP
上一篇
下一篇