当前位置:首页 > Java > 正文

Java日期时间格式化完全指南(从SimpleDateFormat到DateTimeFormatter)

在Java开发中,Java日期时间格式化是一个非常常见的需求。无论是日志记录、用户界面显示,还是数据存储与交换,我们都需要将日期时间以特定格式展示或解析。本教程将带你从基础到进阶,全面掌握Java中的日期时间格式化方法,即使是编程小白也能轻松上手!

Java日期时间格式化完全指南(从SimpleDateFormat到DateTimeFormatter) Java日期时间格式化 SimpleDateFormat DateTimeFormatter Java时间处理 第1张

一、为什么需要日期时间格式化?

计算机内部通常以毫秒数(自1970年1月1日以来的毫秒数)表示时间,但人类更习惯阅读如“2024-06-15 14:30:00”这样的格式。因此,我们需要将时间对象转换为可读字符串(格式化),或将字符串解析为时间对象(解析)。

二、使用SimpleDateFormat(Java 8之前)

SimpleDateFormat 是 Java 早期版本中用于日期格式化的经典类,属于 java.text 包。

1. 格式化日期(Date → String)

import java.text.SimpleDateFormat;import java.util.Date;public class DateFormatExample {    public static void main(String[] args) {        Date now = new Date();        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        String formattedDate = formatter.format(now);        System.out.println("格式化后的时间: " + formattedDate);        // 输出示例:2024-06-15 14:30:45    }}

2. 解析字符串(String → Date)

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateParseExample {    public static void main(String[] args) {        String dateString = "2024-06-15 14:30:45";        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        try {            Date date = formatter.parse(dateString);            System.out.println("解析后的时间: " + date);        } catch (ParseException e) {            e.printStackTrace();        }    }}

⚠️ 注意:SimpleDateFormat 不是线程安全的,在多线程环境中使用需格外小心。

三、使用DateTimeFormatter(Java 8+ 推荐方式)

Java 8 引入了全新的日期时间 API(java.time 包),其中 DateTimeFormatter 是线程安全且功能强大的格式化工具,是现代 Java 开发中处理 Java时间处理 的首选。

1. 使用预定义格式

import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public class NewDateFormatExample {    public static void main(String[] args) {        LocalDateTime now = LocalDateTime.now();        // 使用预定义格式        String formatted = now.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);        System.out.println("ISO格式: " + formatted);        // 输出示例:2024-06-15T14:30:45.123    }}

2. 自定义格式

import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public class CustomFormatExample {    public static void main(String[] args) {        LocalDateTime now = LocalDateTime.now();        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH时mm分ss秒");        String formatted = now.format(formatter);        System.out.println("自定义格式: " + formatted);        // 输出示例:2024年06月15日 14时30分45秒    }}

3. 解析字符串为LocalDateTime

import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public class ParseNewDateExample {    public static void main(String[] args) {        String dateString = "2024-06-15 14:30:45";        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");        LocalDateTime dateTime = LocalDateTime.parse(dateString, formatter);        System.out.println("解析后的时间: " + dateTime);    }}

✅ 优点:DateTimeFormatter 是不可变的,因此是线程安全的,性能也更好。

四、常用格式符号说明

符号 含义
yyyy 四位年份(如:2024)
MM 两位月份(01-12)
dd 两位日期(01-31)
HH 24小时制小时(00-23)
mm 分钟(00-59)
ss 秒(00-59)

五、总结

- 如果你使用的是 Java 8 或更高版本,强烈推荐使用 DateTimeFormatter 进行 Java日期时间格式化,它更安全、更现代。

- 对于旧项目仍在使用 Java 7 及以下版本,可以继续使用 SimpleDateFormat,但要注意线程安全问题。

- 掌握 DateTimeFormatterSimpleDateFormat 的基本用法,能让你在各种 Java时间处理 场景中游刃有余。

希望这篇教程能帮助你彻底掌握 Java 中的日期时间格式化技巧!动手试试吧~