Java 8 LocalDate的介紹及應用
閱讀時間: 3分鐘
Java 8 新增了一個java.time.LocalDate是用來取得日期資訊。
對於舊的java.util.Date,可以取代。
LocalDate沒有時區及時間資訊,僅有日期資訊。使用ISO-8601日期時間系統。格式為year-month-day(例如:2020-01-17)。
LocalDate是不可變的(immutable object)。
LocalDate是執行緒安全的(thread-safe)。
LocalDate可取得一年中的某一天,一個月中的某一天,一個星期中的某一天。
LocalDate有納入閏年(leap year)的計算。
LocalDate是value-based類別,比較兩個LocalDate的實例是否相同應該使用equals()。
例子:取得日期
LocalDate d = LocalDate.now(); // 取得今日 LocalDate d2= LocalDate.of(2020, 1, 17); //或者自定義一個日期 System.out.println("today:" + d.toString()); // today:2020-01-17 System.out.println("year:" + d.getYear()); // year:2020(年) System.out.println("month:" + d.getMonthValue()); // month:1(月) System.out.println("date:" + d.getDayOfMonth()); // date:17(日) System.out.println("day-of-year:" + d.getDayOfYear()); // day-of-year:17(2020年的第17天) System.out.println("day-of-month:" + d.getDayOfMonth()); // day-of-month:17(2020年1月的第17天) System.out.println("day-of-week:" + d.getDayOfWeek().name()); // day-of-week:Friday (星期五) System.out.println("day-of-week:" + d.getDayOfWeek().getValue()); // day-of-week:5(這星期的第5天)
例子:日期運算
System.out.println(d.minusDays(1L)); // 2020-01-16(減一天) System.out.println(d.minusWeeks(1L)); // 2020-01-10(減一周) System.out.println(d.minusMonths(1L)); // 2019-12-17(減一月) System.out.println(d.minusYears(1L)); // 2019-01-17(減一年) System.out.println(d.plusDays(1L)); // 2019-02-12(加一天) System.out.println(d.plusWeeks(1L)); // 2019-02-18(加一周) System.out.println(d.plusMonths(1L)); // 2019-03-11(加一月) System.out.println(d.plusYears(1L)); // 2020-02-11(加一年)
例子:在一段文字中取得日期資訊
// public static LocalDate parse(CharSequence text, DateTimeFormatter formatter) DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMdd"); System.out.println(LocalDate.parse("20200117", format)); // 2020-01-17