1. String 轉化時間
默認情況下,Java日期是ISO8601
格式,因此任何表示ISO8601
格式的日期字符串,可以直接使用LocalDate.parse()
或LocalDateTime.parse()
方法。此處注意 LocalDateTime 與 LocalDate 是不同的
類 | 方法 | 字符串轉化要求 |
---|---|---|
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())