一、日期時間解析與格式化
Java中關於日期時間的處理除了最開始的Date類和Calendar類等基礎類外,在java.time包中引入了新的日期時間處理類。其中,DateTimeFormatter.ofPattern方法尤為常用。
DateTimeFormatter.ofPattern方法用於創建一個DateTimeFormatter對象,從而實現日期時間的解析和格式化。具體來說,它的作用主要有兩個:
一是將日期時間格式化為指定的字元串格式;
二是將字元串格式的日期時間解析為對應的LocalDate、LocalTime或LocalDateTime等日期時間類。
下面先給出示例代碼:
// 根據自定義格式創建DateTimeFormatter對象 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 格式化當前時間 String formattedStr = formatter.format(LocalDateTime.now()); // 解析字元串為LocalDateTime對象 LocalDateTime dateTime = LocalDateTime.parse(formattedStr, formatter);
在上述代碼中,「yyyy-MM-dd HH:mm:ss」即為自定義的日期時間格式,其中「yyyy」表示4位數字的年份,「MM」表示2位數字的月份,「dd」表示2位數字的日期,「HH」表示2位數字的小時,「mm」表示2位數字的分鐘,「ss」表示2位數字的秒數。
需要注意的是,這裡的字母代表的含義是固定的,無法進行調整或擴展。為了滿足不同的日期時間需求,我們可以使用不同的組合方式,創建不同的格式化器。
二、格式化展示
使用DateTimeFormatter.ofPattern方法,可以將日期時間對象格式化為指定的字元串形式,以便進行展示、存儲或傳輸等操作。
下面給出一些基本的格式化示例:
// 標準格式化器,顯示日期、時間和上午/下午標識 DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM); String formattedStr1 = formatter1.format(LocalDateTime.now()); // 格式化為"2022年12月31日 星期六 下午02時18分38秒" System.out.println(formattedStr1); // 自定義格式化器,只顯示日期("yyyy-MM-dd"格式) DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String formattedStr2 = formatter2.format(LocalDate.now()); // 格式化為"2022-12-31" System.out.println(formattedStr2); // 自定義格式化器,只顯示時間("HH-mm-ss"格式) DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH-mm-ss"); String formattedStr3 = formatter3.format(LocalTime.now()); // 格式化為"14-34-00" System.out.println(formattedStr3);
在這些示例中,我們可以看到不同的格式化器創建方式和不同的日期時間格式。
三、日期時間解析
除了將日期時間格式化為指定字元串形式展示外,我們同樣也可以將字元串格式的日期時間解析成對應的日期時間對象。
下面給出幾個解析器示例:
// 標準解析器,將字元串解析為日期時間對象 DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM); LocalDateTime dateTime1 = LocalDateTime.parse("Dec 31, 2022 2:18:38 PM", formatter1); // 輸出為"2022-12-31T14:18:38" System.out.println(dateTime1); // 自定義解析器,將字元串解析為LocalDate對象 DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); LocalDate date = LocalDate.parse("2022年11月30日", formatter2); // 輸出為"2022-11-30" System.out.println(date); // 自定義解析器,將字元串解析為LocalTime對象 DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("HH/mm/ss"); LocalTime time = LocalTime.parse("14/34/00", formatter3); // 輸出為"14:34:00" System.out.println(time);
在這些示例中,我們可以看到將字元串解析為日期時間對象的實際操作過程。
四、時區和本地化
除了基本的格式化和解析操作外,DateTimeFormatter還支持時區和本地化的設置,以便進行更加精確的日期時間處理。
下面給出兩個示例:
// 標準格式化器,帶有時區信息,顯示日期、時間和上午/下午標識 DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) .withLocale(Locale.GERMANY) .withZone(ZoneId.systemDefault()); String formattedStr1 = formatter1.format(ZonedDateTime.now()); // 輸出為"31.12.2022 17:50:03" System.out.println(formattedStr1); // 自定義格式化器,帶有時區信息,僅顯示日期("yyyy/MM/dd"格式) DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy/MM/dd") .withZone(ZoneId.of("Asia/Shanghai")); String formattedStr2 = formatter2.format(ZonedDateTime.now()); // 輸出為"2022/12/31" System.out.println(formattedStr2);
這裡,我們可以看到如何針對時區和本地化信息,調整DateTimeFormatter的行為。比如第一個示例中,我們可以看到日期時間對象被轉換為德語格式並被調整到了本地時區。
總之,DateTimeFormatter.ofPattern是一個非常常用的日期時間處理方法,它支持各種自定義的日期時間格式和解析器,以及多種時區和本地化設置,非常適合用於各類項目中。
原創文章,作者:XOKGY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/361735.html