如何在Java 8中格式化日期时间对象?

在Java应用程序中,您想使用JDK 8中引入的新日期和时间API格式化日期时间对象。解决此问题的方法是使用java.time.format.DateTimeFormatter。本DateTimeFormatter类提供格式化打印和解析日期时间对象。

通过此类,我们可以使用预定义的常量来格式化日期时间对象,其中有许多可随时使用的预定义格式,例如ISO_DATE,ISO_DATE_TIME。您还可以使用模式字母来格式化日期时间对象,例如使用dd MMMM yyyy。格式化程序可以使用long或medium样式以本地化格式进行格式化。

让我们看下面的例子:

package org.nhooo.example.datetime;

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

public class DateTimeFormatterDemo {
    public static void main(String[] args) {
        // 获取系统当前日期和时间。
        LocalDateTime time = LocalDateTime.now();

        // 获取DateTimeFormatter的实例并打印
        // 系统当前日期时间的格式化版本
        // 使用预定义的格式化程序。
        DateTimeFormatter format = DateTimeFormatter.ISO_DATE_TIME;
        System.out.printf("Time: %s%n", time.format(format));

        // 创建一个自定义格式化程序并格式化日期时间
        // 目的。
        DateTimeFormatter customFormat = 
                DateTimeFormatter.ofPattern("MMMM d, yyyy hh:mm a");
        System.out.printf("Time: %s%n", time.format(customFormat));

        // 使用语言环境创建自定义格式器,然后格式化
        // 日期时间对象。
        DateTimeFormatter localeFormat = 
                DateTimeFormatter.ofPattern("d MMM yyyy HH:mm:ss", 
                    Locale.FRENCH);
        System.out.printf("Time: %s%n", time.format(localeFormat));
    }
}

上面代码的结果是:

Time: 2016-02-07T22:57:47.402
Time: February 7, 2016 10:57 PM
Time: 7 févr. 2016 22:57:47