1. 程式人生 > >JAVA8--Time新特性

JAVA8--Time新特性

為什麼引入新的時間類庫

在JDK1.0的時候,java提供了java.util.Date類,正如類名所示,這個類不能表示日期,只能以毫秒的精度表示時間,並且年份的起始是從1900年開始,月份是從0開始,在JDK1.1的時候對Date類進行了修改,並引入了新的類java.util.Calendar類,但是Calendar依舊沒有很好的解決歷史遺留的問題,並且java中有兩個類,程式設計師不知道在何時選擇更好的類,並且某些特性只在一個類中有,比如DateFormat,並且,DateFormat是執行緒不安全的,也就是可以變的,在java類庫中的一些缺陷,使得使用者轉向了第三方類庫,比如很優秀的Joad-Time,在java8中java.time包中也整合了許多Joad-Time的特性。

Java8中提供的新的日期類:

LocalDate類

在java8中,LocalDate很純粹,只是提供額日期相關的操作,接下來,介紹一下它的API: LocalDate中提供了大量的靜態方法

  • 指定日期生成LocalDate:
LocalDate date = LocalDate.of(2018,9,27);
//獲取年份:
int year = date.getYear();
//獲取當前日期
LocalDate now = LocalDate.now();
//獲取月:
int month = date.getMonth();
//獲取日:
int day  = date.getMonthValue
() //在原來的日期上加N天/月/年 LocalDate localDate = date.plus(1, ChronoUnit.YEARS); //是否是閏年: boolean isLeapYear = data.siLeapYeay(); //輸出當前日期的字串 System.out.println(date.toString); ........還有很多API,如果遇到了在看。。

LocalTime類:

LocalTime和LocalDate 的API用法很類似:

//指定時間:
/**LocalTime有三個過載方法,分別可以指定
(小時,分鐘),(小時,分鐘,秒),(小時,分鐘,秒,毫秒)
*/
LocalTime time =
LocalTime.of(13,33,33); //獲取LocalTime中的小時: System.out.println(time.getHour()); //將字串轉為LocalTime LocalTime parse = LocalTime.parse("22:09:09"); System.out.println(parse); .......

LocalDateTime類:

LocaDateTime是將LocalTime和LocalDate結合起來,更好的表達日期和時間:

 LocalDateTime localDateTime = LocalDateTime.now();
        //獲取當前時間小時
        System.out.println(localDateTime.getHour());
        //指定的格式輸出
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
        System.out.println(localDateTime.format(formatter));