Java Date 转字符串

介绍

在Java中,经常会遇到将日期对象转换为字符串的需求。Java提供了多种方式来实现这个目标,本文将介绍几种常用的方法,并提供相应的示例代码。

1. SimpleDateFormat 类

SimpleDateFormat 是 Java 提供的一个类,它可以将日期对象格式化为指定的字符串。它使用一种模式来定义日期的格式,其中不同的模式字符代表不同的日期元素。

下表列出了一些常用的模式字符:

模式字符 说明
yyyy 代表4位年份,如2022
MM 代表2位月份,如01
dd 代表2位日期,如05
HH 代表24小时制的小时,如13
mm 代表分钟数,如59
ss 代表秒数,如30
E 代表星期几,如星期一
z 代表时区,如GMT+08:00

以下是一个使用 SimpleDateFormat 的示例代码:

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

public class DateToStringExample {

    public static void main(String[] args) {
        Date currentDate = new Date();
        
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentDate);
        
        System.out.println("当前日期时间为:" + dateString);
    }
}

上述代码使用了 "yyyy-MM-dd HH:mm:ss" 模式,将当前日期时间格式化为字符串,并输出到控制台。运行代码,输出结果如下:

当前日期时间为:2022-01-05 14:30:00

2. DateTimeFormatter 类

Java 8 引入了新的日期时间 API,其中包含一个 DateTimeFormatter 类,它提供了更强大和灵活的日期格式化功能。

DateTimeFormatter 类使用一种基于模式的方式来定义日期的格式。下表列出了一些常用的模式字符:

模式字符 说明
yyyy 代表4位年份,如2022
MM 代表2位月份,如01
dd 代表2位日期,如05
HH 代表24小时制的小时,如13
mm 代表分钟数,如59
ss 代表秒数,如30
E 代表星期几,如星期一
z 代表时区,如GMT+08:00

以下是一个使用 DateTimeFormatter 的示例代码:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateToStringExample {

    public static void main(String[] args) {
        LocalDateTime currentDateTime = LocalDateTime.now();
        
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String dateString = currentDateTime.format(formatter);
        
        System.out.println("当前日期时间为:" + dateString);
    }
}

上述代码使用了 "yyyy-MM-dd HH:mm:ss" 模式,将当前日期时间格式化为字符串,并输出到控制台。运行代码,输出结果如下:

当前日期时间为:2022-01-05 14:30:00

3. java.time.format 包

除了 DateTimeFormatter 类之外,Java 8 还引入了一个新的 java.time.format 包,其中包含了一些常用的日期格式化工具类,例如 DateTimeFormatterBuilder 和 DateTimeFormatterUtils。

以下是一个使用 java.time.format 包的示例代码:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.DateTimeFormatterUtils;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAccessor;

public class DateToStringExample {

    public static void main(String[] args) {
        LocalDate currentDate = LocalDate.now();
        
        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .appendValue(ChronoField.YEAR, 4)
                .appendLiteral('-')
                .appendValue(ChronoField.MONTH_OF_YEAR, 2)
                .appendLiteral('-')
                .appendValue(ChronoField.DAY_OF_MONTH, 2)
                .toFormatter();
        
        String dateString = formatter.format(currentDate);
        
        System.out.println("当前日期为:" + dateString);
    }
}

上述代码使用了 DateTimeFormatterBuilder 类,通过链式调用的方式构建了一个自定义的格式化