JDK8添加了java.time包,提供了很多方便。
用得比較多的幾個類:
Instant 在時間線上模擬單個瞬時點Duration
以秒和納秒為單位模擬一個數量或時間量。可以使用其他基於持續時間的單位訪問它,例如分鍾和小時LocalDate
表示ISO-8601
日歷系統中沒有時區的日期,例如2019-03-31
LocalTime
表示ISO-8601日歷系統中沒有時區的時間,例如16:50:30
LocalDateTime
表示ISO-8601
日歷系統中沒有時區的日期時間,例如2019-03-31
T10:15:30
其中一些方法使用如下:
public static void main(String[] args) { //2019-03-31 LocalDate localDate = LocalDate.now(); System.out.println(localDate); // 15:56:36.232 LocalTime localTime = LocalTime.now(); System.out.println(localTime); // 2019-03-31T15:56:36.233 LocalDateTime localDateTime = LocalDateTime.now(); System.out.println(localDateTime); // 2019-03-31T07:56:36.233Z Instant instant = Instant.now(); System.out.println(instant); // 獲取當前的時間戳(毫秒) long instantMilli = instant.toEpochMilli(); System.out.println(instantMilli); // 一個小時后的時間=加了一個小時時間 Instant plus1Hours = instant.plus(1, ChronoUnit.HOURS); // 計算兩個時間之間的時間量 long until = instant.until(plus1Hours, ChronoUnit.SECONDS); System.out.println(until); // 一個小時前的時間=減了一個小時 Instant minus1Hours = instant.minus(1, ChronoUnit.HOURS); System.out.println(minus1Hours); // Instant轉換成java.util.Date類型 Date date = Date.from(instant); System.out.println(date); // java.util.Date轉換成Instant類型 Instant dateInstant = date.toInstant(); System.out.println(dateInstant); // 當天開始時間 LocalDateTime start = LocalDateTime.of(localDate, LocalTime.MIN); // 當天結束時間 LocalDateTime end = LocalDateTime.of(localDate, LocalTime.MAX); System.out.println(start); System.out.println(end); // 計算兩個時間之間的時間量度 Duration duration = Duration.between(start, end); System.out.println(duration.toDays()); System.out.println(duration.toHours()); System.out.println(duration.toMinutes()); System.out.println(duration.toMillis()); System.out.println(duration.getSeconds()); // 格式化初始指定時間 System.out.println(LocalDateTime.parse("2019-03-01 11:10:12", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); }