1. 程式人生 > 其它 >JDK8之時間日期處理類

JDK8之時間日期處理類

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());//兩個時間差的納秒數