1. 程式人生 > >JDK1.8新增時間日期API

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");
}