"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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM