乐趣区

关于java:Java-8中DateTimeFormatter类如何使用

在 Java 8 中,能够应用 DateTimeFormatter 类来将日期格局转换为指定的格局(例如:yyyy-MM-dd HH:mm:ss)。

以下是将日期格局转换为指定格局的示例代码:

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

public class DateTimeFormatExample {public static void main(String[] args) {
        // 获取以后日期和工夫
        LocalDateTime dateTime = LocalDateTime.now();

        // 定义日期工夫格局
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // 将日期工夫依照指定格局进行格式化
        String formattedDateTime = dateTime.format(formatter);

        // 打印格式化后的日期工夫
        System.out.println("Formatted DateTime:" + formattedDateTime);
    }
}

// 输入:Formatted DateTime: 2023-07-03 11:11:00

在上述代码中,首先获取以后的日期和工夫 LocalDateTime.now(),而后通过DateTimeFormatter.ofPattern() 办法定义日期工夫的格局,参数为指定的格局字符串(”yyyy-MM-dd HH:mm:ss”)。接下来,应用 format() 办法将日期工夫对象依照指定的格局进行格式化,返回一个格式化后的字符串。最初,打印格式化后的日期工夫。

除了上述的格局字符外,还能够应用其余字符来示意日期工夫的分隔符,例如:-、/、: 等。

须要留神的是,DateTimeFormatter 是线程平安的,因而能够在多线程环境下共享和重用同一个 DateTimeFormatter 对象。


如何将 DateTimeFormatter 格式化的字符串转类型日期转换成 Date 类型?

能够应用 DateTimeFormatter 和 LocalDateTime 互相转换,而后再转换为 Date 格局。

// 1. 将 DateTimeFormatter 格式化的日期字符串转换为 LocalDateTime 对象
LocalDateTime localDateTime = LocalDateTime.parse(formattedDateTime, formatter);

// 2. 将 LocalDateTime 转换为 Instant 对象
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();

// 3. 将 Instant 对象转换为 Date 对象
Date date = Date.from(instant);

// 输入:Mon Jul 03 13:42:08 CST 2023

ZoneId.systemDefault()是一个静态方法,用于获取零碎默认的时区。
atZone()办法承受一个 ZoneId 参数,用于指定时区。它将 LocalDateTime 对象与指定的时区进行关联,并返回一个在该时区下的 ZonedDateTime 对象。
Date.from()办法是将 Instant 对象转换为 Date 对象的静态方法。

请留神,java.time 包中的类型(如 LocalDateTime)是不可变类型,而 java.util.Date 是可变类型。因而,在应用过程中要留神确保线程安全性。如果须要频繁转换日期工夫类型,倡议在整个应用程序中应用 java.time 包。

退出移动版