一、SimpleDateFormat類解析字符串
處理字符串轉時間,使用SimpleDateFormat類是常見的方法之一。format()方法可以將Date類型轉化為指定格式的字符串,parse()方法可以將指定格式的字符串轉化為Date類型。
String timeStr = "2020-01-01 00:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(timeStr);
需要注意,SimpleDateFormat類處理字符串轉時間時,格式要保證與字符串格式一致,否則會拋出ParseException異常。
二、DateTimeFormatter類解析字符串
DateTimeFormatter類也可以解析字符串,它是線程安全的,是Java 8引入的新類。
String timeStr = "2020-01-01T00:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(timeStr, formatter);
需要注意,DateTimeFormatter類格式化字符串時,對于月、日等位數不足兩位的數,要用0補齊,例如09月。同時,T代表ISO-8601標準中的日期和時間分隔符。
三、Instant類解析字符串
Instant類也可以將字符串轉化為時間,它是Java 8新增的類,提供了一種方便的處理時間的方法。
String timeStr = "2020-01-01T00:00:00Z";
Instant instant = Instant.parse(timeStr);
需要注意,Instant類解析字符串時,字符串要符合ISO-8601標準。同時,Z代表UTC時區的時間,如果字符串中不包含時區信息,Instant類默認按照UTC時區處理。
四、ZonedDateTime類解析字符串
ZonedDateTime類可以解析字符串,并提供了一些方便的方法來處理時區信息,它也是Java 8新增的類。
String timeStr = "2020-01-01T00:00:00+08:00[Asia/Shanghai]";
ZonedDateTime zonedDateTime = ZonedDateTime.parse(timeStr);
需要注意,ZonedDateTime類解析字符串時,時區信息要放在方括號中,并符合區域/城市的形式,例如[Asia/Shanghai]代表中國上海時區。
五、總結
以上幾種方法都可以將字符串轉化為時間,具體應用時需要根據業務需求和時間格式選擇不同的方法。對于日期格式,應該根據國際標準ISO 8601的日期和時間表示法來選擇。ISO 8601的日期和時間表示法的官方文檔為https://www.iso.org/iso-8601-date-and-time-format.html。