Exception in thread “main“ java.text.ParseException: Unparseable date: ----记一次java读取excel时间的问题!

2 篇文章 0 订阅
2 篇文章 0 订阅

报错如下:

Exception in thread "main" java.text.ParseException: Unparseable date: "2020-03-10 15:15:25"
    at java.text.DateFormat.parse(DateFormat.java:366)
    at io.nutz.demo.utils.excels.ExcelUserTest.StringToDate1(ExcelUserTest.java:315)
    at io.nutz.demo.utils.excels.ExcelUserTest.main(ExcelUserTest.java:300)
 

 

最近项目上用到的,上测试案例

这是我的excel

这里时间位置 改成对应的格式或者直接用文本然后解析

(如果单元格格式改了之后,在工具类加个判断也能解决!视情况而定)

我是用纯文本解析(单元格格式不是那个NUMERIC,而是STRING,但是有时候excel抽风 改不过来)的 :

然后获取时间

这块已经获取到了

然后,我们来替换下 /(不替换也行,看你的格式)

 

 

再来转换成Date:

然后瞬间爆炸!

 

再来一组:

 

神奇吧? 我第一次我也蒙蔽了

 

但我不服啊  于是我来打印下:

 

有效果了吧?很直观,下面那个就是读取到的

 

try again !!

 

自定义了一个在空字符串对象然后再试 OKK

 

 

我的理解是: 读取到的并不是单纯的空字符串

 

看来要多读点书

 

---------   补更  1207----------------

今天用新版的idea(2020.2)打开看到了这个

果然不单纯!那就是编码格式的问题了

于是查了unicode编码表:
unicode编码表

 

 

发现编码是\u00A0,也找到了手动输入的空格的编码  \u0020

那就好办法了呀,直接替换编码:

        String s2=" 11111";
        String s3=" 11111";
        System.out.println("修改前:");
        System.out.println(s2.equals(s3));
        System.out.println("修改后:");
        s2=s2.replace("\u00A0","");
        System.out.println(s2.equals(s3.replace(" ","")));

解决!

 

还可以根据ASCII 码表来处理

但是,你既然拿到特殊字符了,为什么不直接替换呢?

 

 

纯解决方案!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值