"Sun Dec 31 19:00:00 CST 1899"格式的字串轉Date
阿新 • • 發佈:2020-11-25
背景問題:
今天在做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
內容關於:工作中用到的小技術
本文屬於作者原創,未經允許,禁止轉發