"Sun Dec 31 19:00:00 CST 1899"格式的字符串转Date
发布时间
阅读量:
阅读量
背景问题:
今天我在进行Excel动态列解析的过程中,发现了Excel中日期解析出现的格式与预期不同。这让我有些困惑的是……
我发现一个问题:使用new Date()的方法生成日期后,在后续的处理中发现时间字段发生了变化。
通过不懈的百度终于得知了,这个时间是计算机的起始默认时间
在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);
}
}
AI写代码
调用类
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);
AI写代码
执行结果
1899/12/31 19:00:00
AI写代码
至此日期解析已经完成!能够意识到指定正确的时区至关重要,并且尝试将时间设置为CHINA时区却遇到了错误。
作者:彼岸舞
时间:2020\11\25
内容关于:工作中用到的小技术
本文属于作者原创,未经允许,禁止转发
全部评论 (0)
还没有任何评论哟~
