jdk8帶來了新的時間工具類,主要有LocalDateTime(時間+日期) ,LocalDate(日期) 以及LocalTime(時間)。下面來看看經常使用用法在新的工具類上如何使用。bash
LocalDateTime.now()
LocalDate.now()
LocalTime.now()
複製代碼
獲取當前時間很簡單,直接調用now方法就能夠,上述代碼運行結果以下工具
2019-08-23T16:17:18.439679
2019-08-23
16:17:18.441228
複製代碼
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
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"))
複製代碼
LocalDateTime.of(2018, 8, 13, 23, 56, 2)
複製代碼
根據年月日時分秒能夠直接新建時間,很是方便。
1.時間轉時間戳
LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli()
複製代碼
2.時間戳轉時間
LocalDateTime.ofInstant(Instant.ofEpochMilli(1566550144837L), ZoneId.systemDefault())
複製代碼
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));
複製代碼
看看兩個計算出的結果,和你想的一不同呢。