Table of Contents
ToggleLocalDate in Java with Examples
是一個不可變的類別,表示日期,預設格式為 yyyy-mm-dd,建立日期的方式重新被定義,使用上更加簡便,LocalDate in Java 介紹常見的 format 、 parse 、 ofEpochDay 等方法,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- datetime
| +- localdate
| +- LocalDateWithExamplesTest.java
單元測試
提供日期建立、格式化等操作 LocalDate 。
format
建立一個 LocalDate ,格式化指定日期。
@Test
public void format() {
LocalDate localDate = LocalDate.of(2023, 6, 18);
String result = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(result);
assertEquals("2023-06-18", result);
result = localDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(result);
assertEquals("20230618", result);
result = localDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(result);
assertEquals("2023/06/18", result);
}
2023-06-18
20230618
2023/06/18
parse
LocalDate Java 建立一個 LocalDate ,使用 String 建立指定日期。
@Test
public void parse() {
LocalDate localDate = LocalDate.parse("2023-06-18");
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
localDate = LocalDate.parse("20230618", DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
localDate = LocalDate.parse("2023/06/18", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
}
2023-06-18
2023-06-18
2023-06-18
from
建立一個 LocalDate ,從另一個日期,建立指定日期。
@Test
public void from() {
LocalDate localDate = LocalDate.parse("2023-06-18");
LocalDate result = LocalDate.from(localDate);
System.out.println(result);
assertEquals("2023-06-18", result.toString());
LocalDateTime localDateTime = LocalDateTime.parse("2023-06-18T09:12:05");
ZoneOffset zoneOffset = ZoneOffset.of("+05:00");
OffsetDateTime offsetDateTime = OffsetDateTime.of(localDateTime, zoneOffset);
System.out.println(offsetDateTime);
result = LocalDate.from(offsetDateTime);
System.out.println(result);
assertEquals("2023-06-18", result.toString());
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2023-06-18T09:12:05+05:00[America/Chicago]");
result = LocalDate.from(zonedDateTime);
System.out.println(result);
assertEquals("2023-06-18", result.toString());
}
2023-06-18
2023-06-18T09:12:05+05:00
2023-06-18
2023-06-18
toEpochDay
Java LocalDate 建立一個 LocalDate ,取得紀元日,從 UTC 的 1970-01-01T00:00:00Z 起。
@Test
public void toEpochDay() {
LocalDate localDate = LocalDate.of(2023, 6, 18);
long result = localDate.toEpochDay();
System.out.println(result);
assertEquals(19526L, result);
}
19526
ofEpochDay
建立一個 LocalDate ,將紀元日轉成指定日期。
@Test
public void ofEpochDay() {
LocalDate localDate = LocalDate.ofEpochDay(19526L);
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
}
2023-06-18
ofYearDay
建立一個 LocalDate ,將本年日轉成指定日期。
@Test
public void ofYearDay() {
LocalDate localDate = LocalDate.ofYearDay(2023, 169);
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
}
2023-06-18
LocalDateWithExamplesTest.java
LocalDate in Java 新增單元測試,驗證 Java LocalDate Example 是否符合預期。
package org.ruoxue.java_147.datetime.localdate;
import static org.junit.Assert.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import org.junit.Test;
public class LocalDateWithExamplesTest {
@Test
public void format() {
LocalDate localDate = LocalDate.of(2023, 6, 18);
String result = localDate.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(result);
assertEquals("2023-06-18", result);
result = localDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(result);
assertEquals("20230618", result);
result = localDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(result);
assertEquals("2023/06/18", result);
}
@Test
public void parse() {
LocalDate localDate = LocalDate.parse("2023-06-18");
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
localDate = LocalDate.parse("20230618", DateTimeFormatter.ofPattern("yyyyMMdd"));
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
localDate = LocalDate.parse("2023/06/18", DateTimeFormatter.ofPattern("yyyy/MM/dd"));
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
}
@Test
public void from() {
LocalDate localDate = LocalDate.parse("2023-06-18");
LocalDate result = LocalDate.from(localDate);
System.out.println(result);
assertEquals("2023-06-18", result.toString());
LocalDateTime localDateTime = LocalDateTime.parse("2023-06-18T09:12:05");
ZoneOffset zoneOffset = ZoneOffset.of("+05:00");
OffsetDateTime offsetDateTime = OffsetDateTime.of(localDateTime, zoneOffset);
System.out.println(offsetDateTime);
result = LocalDate.from(offsetDateTime);
System.out.println(result);
assertEquals("2023-06-18", result.toString());
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2023-06-18T09:12:05+05:00[America/Chicago]");
result = LocalDate.from(zonedDateTime);
System.out.println(result);
assertEquals("2023-06-18", result.toString());
}
@Test
public void toEpochDay() {
LocalDate localDate = LocalDate.of(2023, 6, 18);
long result = localDate.toEpochDay();
System.out.println(result);
assertEquals(19526L, result);
}
@Test
public void ofEpochDay() {
LocalDate localDate = LocalDate.ofEpochDay(19526L);
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
}
@Test
public void ofYearDay() {
LocalDate localDate = LocalDate.ofYearDay(2023, 169);
System.out.println(localDate);
assertEquals("2023-06-18", localDate.toString());
}
}
心得分享
Java LocalDate Example 提供了一組日期相關的 API ,物件的值不會被改變,可以同時在不同的執行緒下被使用,提供了幾種 LocalDate 常見方法的操作範例,在應用上相當廣泛,熟悉這些方法的操作,像是: format 、 parse 、 ofEpochDay 等方法。