JAVA8--Time新特性
阿新 • • 發佈:2018-12-12
為什麼引入新的時間類庫
在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));