jdk8時間類的概念
jdk8時間類的來源是因爲以前的時間日期類設計的不足,所以jdk8引入了java.time包來作爲新的日期時間處理類。
- java.time包中主要包含以下類
類 | 說明 |
---|---|
Clock | 使用時區提供對當前即時,日期和時間的訪問的時鐘 |
Duration | 計算兩個“時間”的間隔 |
Instant | 在時間線上的瞬間點(常用) |
LocalDate | 一個不可變的日期時間對象,表示日期,通常被視爲年月日(常用) |
LocalTime | 是一個不可變的日期時間對象,代表一個時間,通常被看作是小時 - 秒 (常用) |
LocalDateTime | 是一個不可變的日期時間對象,代表日期時間,通常被視爲年 - 月 - 日 - 時 - 分 - 秒(常用) |
MonthDay | 是一個不變的日期時間對象,代表一年和一個月的組合 |
OffsetDateTime | 具有偏移量的日期時間的不可變表示 |
OffsetTime | 是一個不可變的日期時間對象,表示一個時間,通常被視爲小時 - 秒 - 秒 |
Period | 用於計算兩個“日期”的間隔 |
Year | 代表一年的不可變日期時間對象 |
YearMonth | 是一個不變的日期時間對象,表示一年和一個月的組合 |
ZonedDateTime | 是具有時區的日期時間的不可變表示 |
Instant
//2019-12-18T09:12:24.377Z ,我們是東八區,默認是按照本初子午線爲準所以要早8個小時
Instant instant = Instant.now();//直接獲取當前時刻
long l = instant.toEpochMilli();//類似與getTime()
//根據時區返回ZoneDateTime
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));//原時間上加8個小時
LocalDate 和 DateTimeFormatter
//顯示當前時間 年-月-日
LocalDate localDate = LocalDate.now();//2019-12-18
//適用於LocalDateTime FormatStyle.SHORT FormatStyle.LONG FormatStyle.MEDIUM FormatStyle.FULL
DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).format(localDate);//19-12-18
DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).format(localDate);//2019年12月18日
DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).format(localDate);//2019-12-18
DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).format(localDate);//2019年12月18日 星期三
LocalTime
//顯示時分秒
LocalTime localTime = LocalTime.now();//17:11:49.751
LocalDateTime 和 DateTimeFormatter
//顯示年月日 時分秒
LocalDateTime localDateTime = LocalDateTime.now();//2019-12-18T17:11:49.751
LocalDateTime a = LocalDateTime.of(2020,12,12,12,12,12);//修改時間的年月日時分秒
//適用於LocalDateTime FormatStyle.SHORT FormatStyle.LONG FormatStyle.MEDIUM
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).format(localDateTime);//19-12-18 下午5:19
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).format(localDateTime);//2019年12月18日 下午05時21分24秒
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).format(localDateTime);//2019-12-18 17:22:26
DateTimeFormatter
//格式化日期格式
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;//默認格式
formatter.parse("2019-12-18T17:04:32.876");//ISO resolved to 2019-12-18T17:04:32.876
//類似SimpleDateFormat 最香的自定義格式時間方式
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());