如何使用 Java 獲取一年的開始和結束日期
1. 概述
Java 8 引入了新的日期時間 API,可以輕鬆地在 Java 中處理日期和時間。它提供了不同的方法來操縱日期和時間。
在本教程中,我們將探討如何使用 Date Time API 和Calendar
類獲取一年的開始日期和結束日期。
2. 使用日期時間API
Date Time API 中的LocalDate
和TemporalAdjuster
類可以輕鬆獲取一年的開始日期和結束日期。
這是使用這些類的示例:
@Test
void givenCurrentDate_whenGettingFirstAndLastDayOfYear_thenCorrectDatesReturned() {
LocalDate today = LocalDate.now();
LocalDate firstDay = today.with(firstDayOfYear());
LocalDate lastDay = today.with(lastDayOfYear());
assertEquals("2023-01-01", firstDay.toString());
assertEquals("2023-12-31", lastDay.toString());
}
首先,我們創建一個LocalDate
對象來獲取當前日期。接下來,我們通過對當前日期的today
對象調用with()
和firstDayOfYear()
來獲取一年中的第一天。
另外,我們在today
調用with()
和lastDayOfYear()
來獲取一年中的最後一天。
值得注意的是, firstDayOfYear()
和lastDayOfYear()
是TemporalAdjuster
類中的靜態方法。
最後,我們斷言今年的第一天和最後一天等於預期結果。
3. 使用Calendar
和Date
類
舊的Calendar和Date
類還可以獲得一年的開始和結束日期。
3.1.開啟新的一年
讓我們使用Calendar
和Date
來開始一年:
@Test
void givenCalendarWithSpecificDate_whenFormattingToISO8601_thenFormattedDateMatches() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2023);
cal.set(Calendar.DAY_OF_YEAR, 1);
Date firstDay = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(firstDay);
assertEquals("2023-01-01", formattedDate);
}
在這裡,我們創建一個新的Calendar
實例並設置一年中的年份和日期。然後,我們獲取Date
對象並將其格式化為預期的開始日期。
最後,我們斷言返回的日期等於預期日期。
3.2.迎接一年的結束
同樣,獲取最後一天的方法如下:
@Test
void givenCalendarSetToFirstDayOfYear_whenFormattingDateToISO8601_thenFormattedDateMatchesFirstDay() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2023);
cal.set(Calendar.MONTH, 11);
cal.set(Calendar.DAY_OF_MONTH, 31);
Date lastDay = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(lastDay);
assertEquals("2023-12-31", formattedDate);
}
在上面的代碼中,我們設置了一年中的最後一天的年、月和日。此外,我們格式化日期並斷言它等於預期日期。
4。結論
在本文中,我們學習瞭如何使用現代 Date Time API 以及舊的Calendar
和Date
類來獲取一年的開始和結束日期。與Calendar
和Date
相比,Date Time API 提供了更清晰、更直觀的 API。
與往常一樣,示例的完整源代碼可在 GitHub 上獲取。