原先的時間 api 大部分已通過時了api
Date構造器 須要傳入年月日 可是對時間的加減操做比較麻煩spa
Calenda 加減比較方便 unix
使用 LocalDate、 LocalTime、 LocalDateTimecode
LocalDate、 LocalTime、 LocalDateTIme 類的實例是不可變的對象。分別使用ISO-8601日曆系統的日期、時間、日期和時間。他們提供了簡單的日期或時間,並不包含當前的時間信息。也不包含與時區相關的信息。對象
他們的使用方式一如出一轍,可是專注程度不同。專門表示日期,專門表示時間,表示時間好日期blog
加減操做時候,有不少API能夠使用的。根據狀況場景本身選擇。get
加法操做io
減法操做:class
@Test public void test1(){ //方式一 LocalDateTime dateTime1 = LocalDateTime.now(); System.out.println(dateTime1); //方式二 LocalDateTime dateTime2 = LocalDateTime.of(2018, 05, 21, 13, 22, 33); System.out.println(dateTime2); //獲取的操做 System.out.println( dateTime1.getYear()); System.out.println(dateTime1.getHour()); }
以上是人讀的,下面是計算機讀的:test
Instant: 時間戳
Unix元年, 1970年1月1日00:00:00 到某個時間之間的毫秒值
@Test public void test(){ Instant now = Instant.now(); //默認是獲取的 UTC 時區 System.out.println(now); OffsetDateTime offsetDateTime = now.atOffset(ZoneOffset.ofHours(8));//相差8個時區的狀況 System.out.println(offsetDateTime); //各類屬性值的獲取 System.out.println(now.getEpochSecond()); //1000s Instant instant = Instant.ofEpochSecond(1000); //從unix時間開始加1000秒 System.out.println(instant); }
補充:
API獲取個各類屬性
計算兩個時間的間隔:
Duration: 計算兩個時間之間的間隔
Period: 計算兩個日期之間的間隔
@Test public void test3() throws InterruptedException { Instant now1 = Instant.now(); Thread.sleep(1000); Instant now2 = Instant.now(); //計算兩個時間戳的間隔 Duration between = Duration.between(now1, now2); System.out.println(between.getSeconds());
這塊兒API不少:
duration也有不少API能夠調用的!能夠作加減運算!
@Test public void test3() throws InterruptedException { Instant now1 = Instant.now(); Thread.sleep(1000); Instant now2 = Instant.now(); //計算兩個時間戳的間隔 Duration between = Duration.between(now1, now2); System.out.println(between.getSeconds()); LocalTime now3 = LocalTime.now(); Thread.sleep(1000); LocalTime now4 = LocalTime.now(); System.out.println(Duration.between(now3, now4).toMillis()); }
日期的間隔:
@Test public void test4(){ LocalDate of = LocalDate.of(2016, 2, 5); LocalDate now = LocalDate.now(); Period between = Period.between(now, of); System.out.println(between); System.out.println(between.getYears()); System.out.println(between.getMonths()); }