將 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 上找到。