ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

POI Excel导入日期时,不同日期格式出现的问题

2021-12-09 15:05:42  阅读:198  来源: 互联网

标签:String MM dd Excel 日期 replaceAll POI 字符串


 

首先:日期有很多中格式,如下:

yyyy-MM-dd 
yyyy-MM-dd HH:mm:ss   ##大写HH是24小时制的时间,小写hh是12小时制的时间
yyyy/MM/dd
yyyy/MM/dd HH:mm:ss

 

然后以前都是用 cell.getDateCellValue() 接收日期,但是会出现一些莫名其妙的报错,然后发现日期格式都是用的String来接收的

 

 

(可以看到上图,单元格的接收格式为字符串)

所以,我就将日期都用字符串来接收,然后再根据不同的格式将字符串转为日期类型(Date)

 

解决方案:

封装了一个将字符串转日期格式的方法(String => Date)

//字符串转日期
public Date stringToDate(String cellValue){
Date date=null;
SimpleDateFormat sdf =null;
        //将"/"都替换成"-",然后再统一处理字符串
        //注意替换后的字符串一定要用一个String接收,不然一直用cellValue会报错,因为字符串是常量,对字符串进行操作都是新建一个新的String
String replaceAll = cellValue.replaceAll("\\/", "-");//   "/"需要转义

sdf=new SimpleDateFormat("yyyy-MM-dd");
if(replaceAll.contains(":")){
sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
try {
date=sdf.parse(replaceAll);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}

ps:

Java中需要转义的字符:( [ { / ^ - $ ¦ } ] ) ? * + .

转义方法就是在字符前加上"\\" ,这样split、replaceAll就不会出现问题了,但是String.contains()方法不需要转义。

 

使用


stringToDate(cell.getStringCellValue())

 

标签:String,MM,dd,Excel,日期,replaceAll,POI,字符串
来源: https://www.cnblogs.com/javacyq/p/15667317.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有