隨筆,JDK8的新時間工具類

jdk8帶來了新的時間工具類,主要有LocalDateTime(時間+日期) ,LocalDate(日期) 以及LocalTime(時間)。下面來看看經常使用用法在新的工具類上如何使用。bash

1. 獲取當前的時間

LocalDateTime.now()
LocalDate.now()
LocalTime.now()
複製代碼

獲取當前時間很簡單,直接調用now方法就能夠,上述代碼運行結果以下工具

2019-08-23T16:17:18.439679
2019-08-23
16:17:18.441228
複製代碼

2. 獲取其餘時區時間

1 獲取utc標準時間post

LocalDateTime.now(ZoneId.of("UTC"))
LocalDate.now(ZoneId.of("UTC"))
LocalTime.now(ZoneId.of("UTC"))
複製代碼

運行結果以下spa

2019-08-23T08:20:34.065057
2019-08-23
08:20:34.065973
複製代碼

能夠看出比第一次運行的時候少了8個小時,由於北京時間是東8區,因此會比utc標準時間多上8個小時。3d

2 根據utc爲標準獲取其餘時區時間code

LocalDateTime.now(ZoneId.of("+7"))
LocalDate.now(ZoneId.of("+7"))
LocalTime.now(ZoneId.of("+7"))
複製代碼

根據utc標準獲取其餘時區時間很簡單,東區就+,西區就-;orm

3. 時間格式化和字符串轉換時間

1 格式化時間字符串

DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now())
DateTimeFormatter.ofPattern("yyyy_MM_dd").format(LocalDate.now())
DateTimeFormatter.ofPattern("HHmmss").format(LocalTime.now())
複製代碼

DateTimeFormatter是定義時間格式的工具類。三個類均可以使用,可是要注意LocalDate不要定義時間格式,LocalTime不要定義日期格式,不然會報錯。get

2 格式化字符串轉時間string

LocalDateTime.parse("20190801000000", DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))
複製代碼

4.新建須要的時間

LocalDateTime.of(2018, 8, 13, 23, 56, 2)
複製代碼

根據年月日時分秒能夠直接新建時間,很是方便。

5.時間和時間戳相互轉換

1.時間轉時間戳

LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli()
複製代碼

2.時間戳轉時間

LocalDateTime.ofInstant(Instant.ofEpochMilli(1566550144837L), ZoneId.systemDefault())
複製代碼

6.時間的計算

1.獲取一個某個時間的年月日時分秒屬性

LocalDateTime now = LocalDateTime.now();
now.getYear();
now.getMonth();
now.getDayOfMonth();
now.getDayOfYear();
now.getDayOfWeek();
now.getHour();
now.getMinute();
now.getSecond();
複製代碼

2.計算某個日期的增減

LocalDateTime now = LocalDateTime.now();
//增長一年
now.plusYears(1);
//減小一年
now.minusYears(1);
//增長一月
now.plusMonths(1);
//減小一月
now.minusMonths(1);
.......
複製代碼

3.計算兩個日期之間的差值

LocalDateTime time1 = LocalDateTime.of(2019, 8, 31, 0, 0);
LocalDateTime time2 = LocalDateTime.of(2019, 7, 31, 0, 0);
System.out.println(time1.until(time2,ChronoUnit.DAYS));

result : -31
複製代碼

很方便就能夠計算出兩個日期之間相差的天數,想要計算其餘值也是同樣。

4.計算這個地方留個小彩蛋吧

LocalDateTime time2 = LocalDateTime.now().minusDays(1);
LocalDateTime time1 = LocalDateTime.now();
System.out.println(time2.until(time1,ChronoUnit.DAYS));

-----------
LocalDateTime time1 = LocalDateTime.now();
LocalDateTime time2 = LocalDateTime.now().minusDays(1);
System.out.println(time2.until(time1,ChronoUnit.DAYS));
複製代碼

看看兩個計算出的結果,和你想的一不同呢。


返回目錄

相關文章
相關標籤/搜索