背景问题:

今天在做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

内容关于:工作中用到的小技术

本文属于作者原创,未经允许,禁止转发

Sun Dec 31 19:00:00 CST 1899格式的字符串转Date相关推荐

  1. 时间格式 2016-08-15T16:00:00.000Z

    我修改的时间是2016-08-16(转换成Date后默认为2016-08-16 00:00:00),而我得到的时间却是2016-08-15T16:00:00.000Z 联想到我们当前的时区是+8区   ...

  2. mysql查找操作返回值出现 - [User{id=1, userName='null', date=Sun Sep 16 00:00:00 CST 2018}]

    在后台进行对mysql数据的添加和查找时出现了下面的问题 2018-09-17 23:27:32.541 INFO 28620 --- [ main] com.example.demo.DemoApp ...

  3. spring mvc get 请求 对于 “Sun Sep 29 00:28:16 CST 2019”格式日期的处理

    1.首先spring mvc 没有指定  日期处理格式,比如 spring.mvc.date-format=yyyy-MM-dd HH:mm:ss 或者 其他形式的日期转化配置: 2.get请求参数为 ...

  4. 打印出来是Thu Jan 01 08:00:00 CST 1970的原因???

    打印出来是Thu Jan 01 08:00:00 CST 1970的原因 打印出来的时间是8点而非0点,原因是存在系统时间和本地时间的问题,其实系统时间依然是0点,只不过我的电脑时区设置为东8区,故打 ...

  5. SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59

    SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间 2009年10月10日 星期六 17:11 错误提示:" ...

  6. 格林威治时间(Tue Jan 01 00:00:00 CST 2019)[ Date ]转化 为 [ 2019-01-01 10:10:10 ]

    格林威治时间(Tue Jan 01 00:00:00 CST 2019)[ Date ]转化 为 [ 2019-01-01 10:10:10 ] String date = "Thu Sep ...

  7. 【.NET】SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间

    #背景 向sqlserver数据库中一个datetime字段插入DateTime.MinValue时, 出现问题: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 ...

  8. # 将日期的符串(Sat Mar 21 08:00:00 CST 2020 )转换为指定字符串日期(yyyy-MM-dd HH:mm:ss)

    将日期的符串(Sat Mar 21 08:00:00 CST 2020 )转换为指定字符串日期(yyyy-MM-dd HH:mm:ss) String str = "Sat Mar 21 0 ...

  9. 格式化格林威治时间(Wed Aug 01 00:00:00 CST 2018)

    在做excel导入数据时候,excel里的日期是格林威治时间,普通格式化不行,这里总结一下格式化格林威治时间的方法: 1.如果格林威治时间时间是date类型.(这种格式最简单) SimpleDateF ...

  10. Sun Jan 05 2020 00:00:00 GMT 0800 (中国标准时间) 时间转换为 2020-01-05 08:00:00

    转换yyyy-MM-dd HH:mm:ss( DateUtil) import java.text.SimpleDateFormat; import java.util.Date; import ja ...

最新文章

  1. Android 表格HorizontalScrollView+ListView
  2. python 数组数据类型
  3. maven设置本地仓库路径
  4. [转载]VC++程序员应当如何阅读ADO文档
  5. 如何用计算机仿真解决能源危机,计算机仿真技术在安全领域内的应用.pdf
  6. UVA 12716 GCD XOR(数论+枚举+打表)
  7. mysql数据库enum部分乱码_要慎用mysql的enum字段的原因
  8. dp---数字三角形问题
  9. Cglib 代码生成库使用快速入门
  10. AutoJs学习-实现取色器
  11. Protel99SE覆铜笔记
  12. SEO系列之站内优化
  13. 箱形图适用于哪种数据_Excel 数据可视化:箱形图全面解析!
  14. Millet谷仓:新型电商势在必行
  15. linux 格式化工具 mkfs 简介
  16. 具有遗传性疾病和性状的遗传位点分析
  17. 仙人掌之歌——上线运营(1)
  18. 火遍全世界的网红美女李子柒一年能赚多少钱,数据量化给你看,连中央媒体都为她打call...
  19. STVP ST Visual Programmer 下载程序出错
  20. 一键备份脚本 backup.sh

热门文章

  1. Linux查看文件数量
  2. 移动节点的间接路由方式
  3. 判断三点方向(顺时针或逆时针)
  4. 机器学习笔记(17)使用XGBoost完成高维数据的分类任务
  5. 华为U8500在USB调试模式下LOGCAT无打印信息的解决方法
  6. mysql中status状态说明
  7. 面向切面编程--加缓存
  8. linux如何连接蓝牙音箱,蓝牙音箱在Ubuntu 16.04中没有声音
  9. 六、Python文件操作
  10. 『CPU飙高』在开发环境中,.NET如何排查CPU飙高原因