JDK1.8新增時間日期API
在JDK1.7中,處理日期相關的資料我們使用java.util.Data,在JDK1.8及以後的API中,對於時間的使用我們更加便利。新增了LocalDate、LocalTime、LocalDateTime,在java.time包下。分別表示ISO-8601日曆系統的日期,時間。他們提供簡單的日期或時間,並不包含當前的時間資訊,也不包含與時區相關的資訊。類的例項是不可變的物件,不但執行緒安全,而且不能修改
1.新的LocalDate用法
LocaDate today = LocalDate.now(); //獲取當前的日期不包含時間 2018-10-08
LocalDate類提供了獲取年、月、日的快捷方法,其例項還包含很多其它的日期屬性。通過呼叫這些方法就可以很方便的得到需要的日期資訊
LocalDate today = LocalDate.now(); int year = today.getYear(); //獲取當前年份 int month = today.getMonthValue(); // 獲取當前月份 int day = today.getDayOfMonth(); // 獲取當天是這個月的第幾天
int day = toay.getDayOfYear();// 獲取當天是一年中的第幾天
2.在Java 8中處理特定日期 呼叫另一個有用的工廠方法LocalDate.of()建立任意日期, 該方法需要傳入年、月、日做引數,返回對應的LocalDate例項。這個方法的好處是沒再犯老API的設計錯誤,比如年度起始於1900,月份是從0開 始等等。日期所見即所得,就像下面這個例子表示了1月14日,沒有任何隱藏機關。
LocalDate today = LocalDate.of(2018,10,8); 輸出 2018-10-08
3.在Java 8中判斷兩個日期是否相等 現實生活中有一類時間處理就是判斷兩個日期是否相等。你常常會檢查今天是不是個特殊的日子,比如生日、紀念日。這時就需要把指定的日期與某個特定 日期做比較,例如判斷這一天是否是假期。下面這個例子會幫助你用Java 8的方式去解決,你肯定已經想到了,LocalDate過載了equal方法,
LocalDate today = LocalDate.of(2018,10,8); if(today.equals(date)){ System.out.println("相同的日期"); }
4.在Java 8中檢查像生日這種週期性事件 Java 中另一個日期時間的處理就是檢查類似每月賬單、結婚紀念日、EMI日或保險繳費日這些週期性事件。如果你在電子商務網站工作,那麼一定會有一個模組用來在 聖誕節、感恩節這種節日時向客戶傳送問候郵件。Java中如何檢查這些節日或其它週期性事件呢?就是MonthDay類。這個類組合了月份和日,去掉 了年,這意味著你可以用它判斷每年都會發生事件。和這個類相似的還有一個YearMonth類。這些類也都是不可變並且執行緒安全的值型別。通過 MonthDay來檢查週期性事件:
LocalDate birDate = LocalDate.of(2018, 10, 8); MonthDay monthDay = MonthDay.of(birDate.getMonth(), birDate.getDayOfMonth()); MonthDay currDay = MonthDay.from(date); if(currDay.equals(monthDay)){ System.out.println("hello"); }else{ System.out.println("sorry"); }
5、在Java 8中獲取當前時間
LocalTime time = LocalTime.now();// 列印time ,可以看到當前時間就只包含時間資訊,沒有日期。
6.在當前時間增加小時
LocalTime time = LocalTime.now(); LocalTime newTime = time.plusHours(2);
7.計算一週後的日期 ChronoUnit是提供的一個工具類
LocalDate date = LocalDate.now(); LocalDate nextWeek = date.plus(2,ChronoUnit.WEEKS); System.out.println(nextWeek);
8.如何用Java判斷日期是早於還是晚於另一個日期
LocalDate birDate = LocalDate.of(2018, 10, 8); if(birDate.isAfter(date)){ System.out.println("yes"); }
LocalDate birDate = LocalDate.of(2018, 10, 8); if(birDate.isBefore(date)){ System.out.println("yes"); }
9.如何在Java 8中檢查閏年
LocalDate date = LocalDate.now(); if(date.isLeapYear()){ System.out.println("yes"); }