Table of Contents
ToggleJava DateTimeFormatter Methods
屬於 java.time.format ,提供了格式化日期時間的 API ,用來顯示及解析日期時間物件,格式化 TemporalAccessor 類別,為日期、時間和偏移物件的基本接口,介紹常見的 ofPattern 、 format 等方法, DateTimeFormatter Java Methods 本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- datetime
| +- datetimeformatter
| +- DateTimeFormatterMethodsTest.java
單元測試
DateTimeFormatter Methods Java 提供自定義的日期時間樣版,格式化等操作 DateTimeFormatter 。
Pattern symbols
自定義模式是使用在格式化或解析時,具有特殊意義的字母。
Symbol | Description | Example |
---|---|---|
y | 年份 | 2023 |
M | 月份 | 1-12 |
MMM | 月份縮寫 | Jan |
MMMM | 完整的月份名稱 | January |
d | 一月中的某一天 | 1-31 |
E | 星期幾縮寫 | Mon |
EEEE | 完整的星期名稱 | Monday |
h | 小時 | 0-11 |
H | 小時 | 0-23 |
m | 分鐘 | 0-59 |
s | 秒 | 0-59 |
S | 秒的小數部分 | 0-9 |
a | AM / PM,早上或下午 | AM |
z | 時區縮寫 | PST |
Z | 時區偏移 | +0800 |
ofPattern
DateTimeFormatter Methods Java 建立一個 DateTimeFormatter ,提供樣版,格式化日期時間。
@Test
public void ofPattern() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
String result = formatter.format(LocalDateTime.now());
System.out.println(result);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
result = formatter.format(LocalDate.now());
System.out.println(result);
formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
result = formatter.format(LocalTime.now());
System.out.println(result);
}
2023-06-25T21:40:32
2023-06-25
21:40:32
format
DateTimeFormatter Methods Java 建立一個 DateTimeFormatter ,提供樣版,格式化 LocalDateTime 日期時間。
@Test
public void format() {
LocalDateTime localDateTime = LocalDateTime.parse("2023-03-14T09:08:07.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
String result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023-03-14T09:08:07", result);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS");
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023-03-14T09:08:07.123456789", result);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023-03-14T09:08:07.123", result);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.TRADITIONAL_CHINESE);
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023-03-14T09:08:07.123", result);
}
2023-03-14T09:08:07
2023-03-14T09:08:07.123456789
2023-03-14T09:08:07.123
2023-03-14T09:08:07.123
formatLocalDate
DateTimeFormatter Methods Java 建立一個 DateTimeFormatter ,提供樣版,格式化 LocalDate 日期,提供 DateTimeFormatter Functions in Java 範例。
@Test
public void formatLocalDate() {
LocalDate localDate = LocalDate.parse("2023-03-14");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String result = formatter.format(localDate);
System.out.println(result);
assertEquals("2023-03-14", result);
formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
result = formatter.format(localDate);
System.out.println(result);
assertEquals("20230314", result);
formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd", Locale.TRADITIONAL_CHINESE);
result = formatter.format(localDate);
System.out.println(result);
assertEquals("2023/03/14", result);
}
2023-03-14
20230314
2023/03/14
formatLocalTime
DateTimeFormatter Methods in Java 建立一個 DateTimeFormatter ,提供樣版,格式化 LocalTime 時間,提供 DateTimeFormatter Functions in Java 範例。
@Test
public void formatLocalTime() {
LocalTime localTime = LocalTime.parse("09:08:07.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String result = formatter.format(localTime);
System.out.println(result);
assertEquals("09:08:07", result);
formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSSSSS");
result = formatter.format(localTime);
System.out.println(result);
assertEquals("09:08:07.123456789", result);
formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");
result = formatter.format(localTime);
System.out.println(result);
assertEquals("09:08:07.123", result);
formatter = DateTimeFormatter.ofPattern("HH-mm-ss.SSS", Locale.TRADITIONAL_CHINESE);
result = formatter.format(localTime);
System.out.println(result);
assertEquals("09-08-07.123", result);
}
09:08:07
09:08:07.123456789
09:08:07.123
09-08-07.123
ofLocalizedDate
Java Initialize DateTimeFormatter 建立一個 DateTimeFormatter ,提供本地化樣版,使用 FormatStyle 格式化日期時間。
@Test
public void ofLocalizedDate() {
LocalDateTime localDateTime = LocalDateTime.parse("2023-03-14T09:08:07.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
String result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023年3月14日 星期二", result);
formatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.LONG);
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("上午09時08分07秒", result);
formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023年3月14日 上午09時08分07秒", result);
formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.SHORT);
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023/3/14 上午 9:08", result);
}
2023年3月14日 星期二
上午09時08分07秒
2023年3月14日 上午09時08分07秒
2023/3/14 上午 9:08
DateTimeFormatterMethodsTest.java
DateTimeFormatter Methods in Java 新增單元測試,驗證 DateTimeFormatter Functions in Java 是否符合預期。
package org.ruoxue.java_147.datetime.datetimeformatter;
import static org.junit.Assert.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.util.Locale;
import org.junit.Test;
public class DateTimeFormatterMethodsTest {
@Test
public void ofPattern() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
String result = formatter.format(LocalDateTime.now());
System.out.println(result);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
result = formatter.format(LocalDate.now());
System.out.println(result);
formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
result = formatter.format(LocalTime.now());
System.out.println(result);
}
@Test
public void format() {
LocalDateTime localDateTime = LocalDateTime.parse("2023-03-14T09:08:07.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
String result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023-03-14T09:08:07", result);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS");
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023-03-14T09:08:07.123456789", result);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023-03-14T09:08:07.123", result);
formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.TRADITIONAL_CHINESE);
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023-03-14T09:08:07.123", result);
}
@Test
public void formatLocalDate() {
LocalDate localDate = LocalDate.parse("2023-03-14");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String result = formatter.format(localDate);
System.out.println(result);
assertEquals("2023-03-14", result);
formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
result = formatter.format(localDate);
System.out.println(result);
assertEquals("20230314", result);
formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd", Locale.TRADITIONAL_CHINESE);
result = formatter.format(localDate);
System.out.println(result);
assertEquals("2023/03/14", result);
}
@Test
public void formatLocalTime() {
LocalTime localTime = LocalTime.parse("09:08:07.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String result = formatter.format(localTime);
System.out.println(result);
assertEquals("09:08:07", result);
formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSSSSS");
result = formatter.format(localTime);
System.out.println(result);
assertEquals("09:08:07.123456789", result);
formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");
result = formatter.format(localTime);
System.out.println(result);
assertEquals("09:08:07.123", result);
formatter = DateTimeFormatter.ofPattern("HH-mm-ss.SSS", Locale.TRADITIONAL_CHINESE);
result = formatter.format(localTime);
System.out.println(result);
assertEquals("09-08-07.123", result);
}
@Test
public void ofLocalizedDate() {
LocalDateTime localDateTime = LocalDateTime.parse("2023-03-14T09:08:07.123456789");
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
String result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023年3月14日 星期二", result);
formatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.LONG);
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("上午09時08分07秒", result);
formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023年3月14日 上午09時08分07秒", result);
formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.SHORT);
result = formatter.format(localDateTime);
System.out.println(result);
assertEquals("2023/3/14 上午 9:08", result);
}
}
心得分享
DateTimeFormatter Functions in Java 是執行緒安全且不可變的,解析與格式化 TemporalAccessor 類別,熟悉 DateTimeFormatter Methods in Java 這些方法的操作,介紹 ofPattern 、 format 等常見方法的操作範例。