將 TemporalAccessor 轉換為 LocalDate
一、簡介
處理日期和時間值是一項常見任務。有時,我們可能需要將TemporalAccessor物件轉換為LocalDate物件以執行特定於日期的操作。因此,在解析日期時間字串或從日期時間物件中提取日期元件時,這可能很有用。
在本教程中,我們將探索在 Java 中實現此轉換的不同方法。
2.使用LocalDate.from()方法
將TemporalAccessor轉換為LocalDate直接方法是使用LocalDate.from(TemporalAccessor temporal)方法。實際上,此方法從TemporalAccessor中提取日期元件(年、月和日)並建構LocalDate物件。讓我們來看一個例子:
String dateString = "2022-03-28";
TemporalAccessor temporalAccessor = DateTimeFormatter.ISO_LOCAL_DATE.parse(dateString);
@Test
public void givenTemporalAccessor_whenUsingLocalDateFrom_thenConvertToLocalDate() {
LocalDate convertedDate = LocalDate.from(temporalAccessor);
assertEquals(LocalDate.of(2022, 3, 28), convertedDate);
}
在此程式碼片段中,我們使用值(2022-03-28 ) 初始化String變數dateString ,表示 ( ISO 8601 ) 格式的日期。此外,我們使用DateTimeFormatter.ISO_LOCAL_DATE.parse()方法將此字串解析為TemporalAccessor物件temporalAccessor 。
隨後,我們使用LocalDate.from(temporalAccessor)方法將temporalAccessor轉換為LocalDate物件convertedDate ,有效地擷取和建構日期元件。
最後,透過斷言assertEquals(LocalDate.of(2022, 3, 28), convertedDate) ,我們確保轉換結果convertedDate與預期日期相符。
3. 使用TemporalQueries
將TemporalAccessor轉換為LocalDate另一種方法是使用TemporalQueries 。我們可以定義一個自訂TemporalQuery來提取必要的日期元件並建構一個LocalDate物件。這是一個例子:
@Test
public void givenTemporalAccessor_whenUsingTemporalQueries_thenConvertToLocalDate() {
int year = temporalAccessor.query(TemporalQueries.localDate()).getYear();
int month = temporalAccessor.query(TemporalQueries.localDate()).getMonthValue();
int day = temporalAccessor.query(TemporalQueries.localDate()).getDayOfMonth();
LocalDate convertedDate = LocalDate.of(year, month, day);
assertEquals(LocalDate.of(2022, 3, 28), convertedDate);
}
在此測試方法中,我們呼叫temporalAccessor.query(TemporalQueries.localDate())方法來取得表示從temporalAccessor提取的日期的LocalDate實例。
然後,我們分別使用getYear() 、 getMonthValue()和getDayOfMonth()方法從此LocalDate實例檢索年、月和日部分。隨後,我們使用LocalDate.of()方法和這些擷取的元件建構一個LocalDate物件convertedDate 。
4。結論
總之,在 Java 中將TemporalAccessor轉換為LocalDate可以使用LocalDate.from()或TemporalQueries.此外,這些方法提供了靈活有效的方法來執行轉換,從而實現了 Java 應用程式中日期時間功能的無縫整合。
與往常一樣,隨附的源代碼可以在 GitHub 上找到。