JDK8之時間日期處理類
阿新 • • 發佈:2021-09-04
JDK8之時間日期處理類
jdk8之前處理時間的api
時間處理再熟悉不過,SimpleDateFormat,Calendar等類
舊版缺點:java.util.Date是⾮執行緒安全的API設計⽐較差,日期/時間物件⽐較,加減麻
Java 8通過釋出新的Date-Time API
- Java 8通過釋出新的Date-Time API (JSR 310)來進⼀步加強對日期與時間的處理
- 核心類
LocalDate:不包含具體時間的⽇期。
LocalTime:不含⽇期的時間。
LocalDateTime:包含了⽇期及時間。
LocalDate常用的API
LocalDate today = LocalDate.now(); System.out.println("今天日期:" + today); //獲取年,⽉,日,周⼏ System.out.println("現在是哪年:"+today.getYear()); System.out.println("現在是哪⽉:"+today.getMonth()); System.out.println("現在是哪⽉(數字):"+today.getMonthValue()); System.out.println("現在是⼏號:"+today.getDayOfMonth()); System.out.println("現在是周⼏:"+today.getDayOfWeek()); //加減年份, 加後返回的物件才是修改後的, 舊的依舊是舊的 LocalDate today = LocalDate.now(); System.out.println("今天日期:" + today); //獲取年,⽉,日,周⼏ System.out.println("現在是哪年:"+today.getYear()); System.out.println("現在是哪⽉:"+today.getMonth()); System.out.println("現在是哪⽉(數字):"+today.getMonthValue()); System.out.println("現在是⼏號:"+today.getDayOfMonth()); System.out.println("現在是周⼏:"+today.getDayOfWeek()); //加減年份, 加後返回的物件才是修改後的, 舊的依舊是舊的
LocalTime和LocalDateTime 的API使用方法和上述無異
日期格式化
- JDK8之前:SimpleDateFormat來進⾏格式化,但SimpleDateFormat並不是執行緒安全的
- JDK8之前:SimpleDateFormat來進⾏格式化,但SimpleDateFormat並不是執行緒安全的
LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String ldtStr = dtf.format(ldt); System.out.println(ldtStr);
- 獲取指定的日期時間物件
LocalDateTime ldt = LocalDateTime.of(2020, 11, 11, 8, 20, 30);
System.out.println(ldt);
-
計算日期時間差 java.time.Duration
-
LocalDateTime today = LocalDateTime.now(); System.out.println(today); LocalDateTime changeDate = LocalDateTime.of(2020,10,1,10,40,30); System.out.println(changeDate); Duration duration = Duration.between( today,changeDate);//第⼆個引數減第⼀ 個引數 System.out.println(duration.toDays());//兩個時間差的天數 System.out.println(duration.toHours());//兩個時間差的⼩時數 System.out.println(duration.toMinutes());//兩個時間差的分鐘數 System.out.println(duration.toMillis());//兩個時間差的毫秒數 System.out.println(duration.toNanos());//兩個時間差的納秒數