DateTimeFormatter.ofPattern使用詳解

一、日期時間解析與格式化

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-hant/n/361735.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XOKGY的頭像XOKGY
上一篇 2025-02-25 18:17
下一篇 2025-02-25 18:17

相關推薦

  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • C語言貪吃蛇詳解

    一、數據結構和算法 C語言貪吃蛇主要運用了以下數據結構和算法: 1. 鏈表 typedef struct body { int x; int y; struct body *nex…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性傳感器,能夠同時測量加速度和角速度。它由三個傳感器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • Java BigDecimal 精度詳解

    一、基礎概念 Java BigDecimal 是一個用於高精度計算的類。普通的 double 或 float 類型只能精確表示有限的數字,而對於需要高精度計算的場景,BigDeci…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25

發表回復

登錄後才能評論