1. 程式人生 > 實用技巧 >"Sun Dec 31 19:00:00 CST 1899"格式的字串轉Date

"Sun Dec 31 19:00:00 CST 1899"格式的字串轉Date

背景問題:

今天在做Excel動態列解析的時候,發現Excel中的日期解析出來居然是這種格式,emmm,這是個啥?

並且發現,通過直接new Date的方式,然後通過SimpleDateFormat格式化後,時間變了?我TM啥東西

通過不懈的百度終於得知了,這個時間是計算機的起始預設時間

在Excel中為 19:00的單元格,被解析完成後,變成了"Sun Dec 31 19:00:00 CST 1899"

年月日直接變成了1899/12/31

解決方案:

那麼這種格式的時間字串如何正確的格式化為Date呢?

百度後我封裝成了一個工具類,拿出來分享

解析工具類

package utils;

import java.text.ParseException;
import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; /** * 日期格式化工具類 * @author ZYGisComputer */ public class DateFormatUtil { public static Date parse(String str, String pattern, Locale locale) { if(str == null || pattern == null) { return null
; } try { return new SimpleDateFormat(pattern, locale).parse(str); } catch (ParseException e) { e.printStackTrace(); } return null; } public static String format(Date date, String pattern, Locale locale) { if(date == null
|| pattern == null) { return null; } return new SimpleDateFormat(pattern, locale).format(date); } }

呼叫類

String date = "Sun Dec 31 19:00:00 CST 1899";
Date parse1 = DateFormatUtil.parse(date, "EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
String format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(parse1);
System.out.println(format);

執行結果

1899/12/31 19:00:00

到此日期解析完成!可以發現我們是需要指定時區的,但是我試過換成CHINA時區就會報錯[捂臉]

作者:彼岸舞

時間:2020\11\25

內容關於:工作中用到的小技術

本文屬於作者原創,未經允許,禁止轉發