JDK8中新日期時間API
它們面臨的問題是:
可變性:像日期和時間這樣的類應該是不可變的。
偏移性:Date中的年份是從1900開始的,而月份都從0開始。
格式化:格式化只對Date有用,Calendar則不行。
此外,它們也不是執行緒安全的;不能處理閏秒等。
LocalDate、LocalTime、LocalDateTime 類是其中較重要的幾個類,它們的實例
是不可變的對象,分別表示使用 ISO-8601日曆系統的日期、時間、日期和時間。
它們提供了簡單的本地日期或時間,並不包含當前的時間資訊,也不包含與時區
相關的資訊。
LocalDate代表IOS格式(yyyy-MM-dd)的日期,可以存儲 生日、紀念日等日期。
LocalTime表示一個時間,而不是日期。
LocalDateTime是用來表示日期和時間的,這是一個最常用的類之一。
/*
LocalDate、LocalTime、LocalDateTime 的使用
說明:
1.LocalDateTime相較於LocalDate、LocalTime,使用頻率要高
2.類似於Calendar
*/
@Test public void test1(){ //now():獲取當前的日期、時間、日期+時間 LocalDate localDate = LocalDate.now(); LocalTime localTime = LocalTime.now(); LocalDateTime localDateTime = LocalDateTime.now(); System.out.println(localDate); System.out.println(localTime); System.out.println(localDateTime); //of():設置指定的年、月、日、時、分、秒。沒有偏移量 LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43); System.out.println(localDateTime1); //getXxx():獲取相關的屬性 System.out.println(localDateTime.getDayOfMonth()); System.out.println(localDateTime.getDayOfWeek()); System.out.println(localDateTime.getMonth()); System.out.println(localDateTime.getMonthValue()); System.out.println(localDateTime.getMinute()); //體現不可變性 //withXxx():設置相關的屬性 LocalDate localDate1 = localDate.withDayOfMonth(22); System.out.println(localDate); System.out.println(localDate1);
LocalDateTime localDateTime2 = localDateTime.withHour(4); System.out.println(localDateTime); System.out.println(localDateTime2); //不可變性 LocalDateTime localDateTime3 = localDateTime.plusMonths(3); System.out.println(localDateTime); System.out.println(localDateTime3); LocalDateTime localDateTime4 = localDateTime.minusDays(6); System.out.println(localDateTime); System.out.println(localDateTime4); }