HOWTO · Java
Java 更改日期格式
本文介紹如何在 Java 中更改日期格式
有多種選項可用於將日期字串轉換為日期格式。下面提到的方法可以帶來所需的結果。讓我們從下面的程式碼塊中瞭解各種方式。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class StringToDateFormat {
public static void main(String[] args) throws ParseException {
System.out.print("Way1: ");
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-MM-dd");
System.out.print(dt.parse("2021-11-05") + "\n");
System.out.print("Way2: ");
SimpleDateFormat formatter = new SimpleDateFormat("dd/MMM/yyyy HH:mm:ss", Locale.ENGLISH);
System.out.print(formatter.parse("21/JAN/2021 21:35:56") + "\n");
System.out.print("Way3: ");
DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("EEE, d MMM yyyy", Locale.ENGLISH);
System.out.print(LocalDate.parse("Wed, 5 May 2021", formatter1) + "\n");
System.out.print("Way4: ");
System.out.print(LocalDate.parse("2021-05-31") + "\n");
}
}
在 Way1 中,建立了 SimpleDateFormat 類的一個例項。它採用輸入日期字串的格式的 pattern 值。因此,通過這種方式,我們輸入了 yyyy-MM-dd 格式的日期。如果引數為 null 或非法,例項化還會丟擲一些異常,如 NullPointerException 和 IllegalArgumentException。現在使用最近建立的 formatter 物件,我們初始化一個 parse 方法。該方法將日期字串作為輸入值,並在解析後返回日期資料型別。當給定的日期字串和格式化程式不匹配時,或內部日期字串未解析時,它會丟擲 ParseException。
在 Way2 中,再次使用 SimpleDateFormat 類來建立應該輸入的格式。但是現在,呼叫了 SimpleDateFormat 的重寫建構函式。第一個引數是 Date 字串的 format/pattern。另一個是定義特定地理區域或區域的 Locale。Note: 方法中不允許使用所有語言環境。現在,檢查以 mmm 格式顯示月份的 dd/MMM/yyyy HH:mm: ss 模式。該格式暗示月份的速記形式可以接受 mmm 形式。此外,格式字串可能需要幾小時、幾分鐘和幾秒鐘。
在 Way3 中,使用 DateTimeFormat 類來格式化和列印日期時間物件。ofPattern 方法用於準備所需模式的格式化程式。現在呼叫 LocalDate 類的靜態方法來解析日期。方法是 parse 用於解析文字和 DateTimeFormatter 用於指定輸入日期文字的格式。該方法返回 LocalDate 例項並且不為空。當無法解析文字時,它會丟擲 DateTimeParseException。該格式還可以採用日期名稱。EEE 縮寫在格式化程式中表示相同。
在 Way4 中,直接呼叫作為 LocalDate 類的靜態工廠方法的 parse 方法。這次沒有以任何方式定義格式化程式例項或模式。現在該函式採用 yyyy-MM-dd 形式的輸入日期字串。指定的日期字串必須始終表示有效日期並使用 DateTimeFormatter.ISO_LOCAL_DATE 格式進行轉換。當無法解析文字時,該方法會引發異常 DateTimeParseException。
下面是將日期字串轉換為 Date 形式的程式碼輸出。
Way1: Fri Nov 05 00:00:00 IST 2021
Way2: Thu Jan 21 21:35:56 IST 2021
Way3: 2021-05-05
Way4: 2021-05-31