Java 8 時間處理的使用

1. String 轉化時間

默認情況下,Java日期是ISO8601格式,因此任何表示ISO8601格式的日期字符串,可以直接使用LocalDate.parse()LocalDateTime.parse()方法。此處注意 LocalDateTimeLocalDate 是不同的

方法 字符串轉化要求
LocalDateTime parse(CharSequence text) 字符串格式爲日期 +時間T用來分割日期和時間,如“2018-12-05T12:12:12”,否則將報錯
LocalDate parse(CharSequence text) 字符串必須完全符合年月日格式,如“2018-12-05”,否則將報錯

1.1 直接解析

直接解析轉化字符串爲時間,字符串需符合 ISO8601 格式

 // LocalDateTime,日期加時間
 String str1="2020-12-05T12:12:23";
 LocalDateTime time = LocalDateTime.parse(str1)
 
 // LocalDate 日期
 String str2="2020-12-05";
 LocalDate date = LocalDate.parse(str2)

1.2 自定義解析

藉助格式化日期時間格式化類 DateTimeFormatter需注意格式化的模式必須完全和待轉化的字符串一致,比如待格式化字符串帶有分信息 2020-12-05 12:12,則模式必須爲yyyy-MM-dd HH:mm,否則會報錯。另外也需要考慮時間進制的問題,比如本例中時間爲 12:12,這是 24 小時制纔會有的,故其對應的時間模式爲 HH:mm,小寫的 h 代表 12 小時制

// LocalDateTime,日期加時間
String str1="2020-12-05 12:12:23";
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dataTime = LocalDateTime.parse(str1, dateTimeFormatter);

// LoaclDate 日期
String str2="2020-12-05";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate localDate = LocalDate.parse(str2, formatter);

2. 時間轉化 String

把時間轉化成想要的字符串相對簡單,藉助 DateTimeFormatter 很容易就可以完成

// DateTimeFormatter 指定模式,LocalDateTime.format()截取字符串
String yearMonth = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy_MM"))

// DateTimeFormatter 指定模式,LocalDate.format()截取字符串,注意 LocalDate 只包含 年月日
String yearAndMonth = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy_MM"))

3. 時間戳轉化時間

Java 中時間戳一般可以通過 System相關接口獲取,其轉化爲日期時間時需要考慮時區,示例如下

// 根據 秒 時間戳配合 時區 將其轉化爲 時間
LocalDateTime time = LocalDateTime.ofInstant(Instant.ofEpochSecond(1582703557), ZoneId.systemDefault())
// 系統 API 獲取 毫秒 時間戳,再配合時區將其轉化爲時間
LocalDateTime time1 = LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneId.systemDefault())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章