public List<Map<String,String>> uploadFileParse(Sheet sheet, int startReadLine, int tailLine) throws Exception{
List<Map<String,String>> list = Lists.newArrayList();
for (int i = startReadLine; i < sheet.getLastRowNum() - tailLine + 1; i++) {
Row row = sheet.getRow(i);
Map<String,String> map = Maps.newConcurrentMap();
for (Cell c : row) {
String val = "";
if (c.getCellType() == CellType.NUMERIC) {
if (DateUtil.isCellDateFormatted(c)) {
Date tempValue = c.getDateCellValue();
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
val = simpleFormat.format(tempValue);
}else {
val = String.valueOf(c.getNumericCellValue());
}else if (c.getCellType() == CellType.STRING) {
val = c.getRichStringCellValue().toString().trim();
注意:重点是在判断c.getCellType() == CellType.NUMERIC时进行的处理。因为我在遍历完表格放到一个list后再读取时进行SimpleDateFormat 格式化就会报上述这个错,所以处理的时机要选对。
java 导入excel文档 日期时间格式出错java.text.ParseException: Unparseable date: “44480.6633101852 ,完美解决
java 导入excel文档 日期时间格式出错java.text.ParseException: Unparseable date: "44480.6633101852 ,完美解决问题描述:解决方法:问题描述:项目中有个需求是导入excel文档,文档中有个日期时间,开始导入时总是报错,如下图所示的错误:解决方法:在导入文件时,遍历每一行时加入如下方法:public List<Map<String,String>> uploadFileParse(Sheet sheet,
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String s) {
Date date;
//实现将字符串转成⽇期类型(格式是yyyy-MM-dd)
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"
今天遇到了一个特别普遍但是相对于来说之前没见过的问题,那就是在使用导入Excel 时日期的问题,今天在这里讲一下解决方案,文章末尾也特别感谢一篇其他的参考文章
首先上问题
我在Excel里面存放的日期是:2019/08/21 然后在后台读取的时候为43188 (大概是这样的的,例子,别纠结),然后实体类里面的日期是Date类型,也就是说将获取的日期转换成时间类型,即数据库存入的时候就是2019-0...
摘要:通常,我们在定义日期格式时会用到SimpleDateFormat 类来处理日期格式,但最近在写导入功能时发现Excel文档在读取日期时会出现问题,因为Excel文档在日期方面有着固定的格式。比如:
上方时间格式为Excel固定格式:2019/11/11,进行导入读取,debug走一波即可发现
不难发现,此时读入的日期为“43780”的一串数字,这样也无法使用SimpleDateFormat的...
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.poi.ss.userm...
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");这里的格式是
4位年 2位月 2位日 2位时 2位分 2位秒 共14位
但是你传入的字符串 只有12位 转换就出错了201104132200变成20110413220000就对了
输入的字符串要和你想要的格式长度神马的都一样才行
SimpleDateFormat sdf = new SimpleDateFormat("yyyy
今天在做保存的时候出现这个bug:Unparseable date: "2019-03-06",经过查看发现数据库存储这个字段的类型是datatime,所以保存的时候报错,把日期改为2019-03-06 12:35:20 问题解决;这是因为不同的类型支持不同的日期格式。
mysql中常用的日期类型有date,datetime,Timestamp;这三种格式是不一样的。
1.date类型 :My...
原因:如果Excel里面有格式为:xx年xx月xx日,或者类似的中文的日期单元格,在这里进行判断:HSSFDateUtil.isCellDateFormatted(row.getCell(3)) ,返回的结果就为false
处理方式:
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");
Cell cell = row.getCell(...
public static void main(String[] args) {
String str = "1987-04-12 00:00:00";
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
//此处指定日期/时间解析是否不严格,在true是不严格,false时为严格
sd.setLenie
这个错误通常表示日期字符串的格式与您正在尝试使用的日期解析格式不匹配。
要解决此问题,您可以检查日期字符串是否按照指定的日期解析格式进行格式化。如果不是,请相应地更改日期字符串的格式或日期解析格式。
以下是一个简单的示例,演示如何将日期字符串从“yyyy-MM-dd HH:mm:ss”格式解析为日期对象:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateParsingExample {
public static void main(String[] args) {
String dateString = "2023-03-01 10:30:00";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date date = dateFormat.parse(dateString);
System.out.println("Parsed date: " + date);
} catch (ParseException e) {
System.out.println("Error parsing date: " + e.getMessage());
在上面的示例中,我们使用SimpleDateFormat类来指定日期解析格式并将日期字符串解析为日期对象。如果日期字符串无法按照指定的日期解析格式进行解析,则会引发ParseException异常。
### 回答2:
Java中的ParseException是一个异常类,当从字符串中解析日期或时间时,出现错误时会抛出此异常。在上面的错误信息中,解析的日期字符串为空,无法进行解析,因此会抛出unparseable date的异常。
出现此错误的原因可能是由于输入的日期字符串不符合指定的日期格式,或者日期字符串本身存在错误。在Java中,日期格式必须被正确指定才能被解析。如果日期格式无法与输入的日期字符串匹配,则解析操作将失败,并抛出ParseException异常。
为了解决这个问题,我们需要检查输入的日期字符串,并提供正确的日期格式。可以尝试使用SimpleDateFormat类来指定日期格式,并使用它将日期字符串转换为日期对象,如下所示:
String dateString = "2021-09-01";
String dateFormat = "yyyy-MM-dd";
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
Date date = null;
try {
date = sdf.parse(dateString);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
在上面的代码示例中,我们使用了日期格式字符串“yyyy-MM-dd”,来定义了输入的日期字符串的格式。我们使用SimpleDateFormat.parse()方法来解析日期字符串,并将其转换为Date对象。
总之,当出现java.text.parseexception: unparseable date: ""错误时,通常可以通过检查输入的日期字符串并提供正确的日期格式来解决问题。
### 回答3:
这个错误信息通常是因为在使用Java解析日期字符串的时候,传递的日期字符串格式不符合指定的日期格式或者传递的日期字符串为空导致的。
Java中日期格式化和解析都是通过SimpleDateFormat类来实现的,通过设置指定的日期格式字符串和使用parse()方法将字符串解析为Date类型的对象。如果传递的日期字符串不符合指定的格式,解析方法将无法进行解析并抛出ParseException异常。如果传递的日期字符串为空,解析方法无法从空字符串中提取日期信息,同样会抛出ParseException异常。
解决这个错误可以考虑以下几点:
1. 确认传递的日期字符串格式是否与指定的日期格式一致,可以通过查阅Java官方文档或者SimpleDateFormat类的说明文档获得具体的日期格式。
2. 确认传递的日期字符串是否为空,如果为空可以考虑在传递前进行判断或者捕获异常并处理。
3. 如果以上两点都不是问题,可以考虑使用其他的日期格式化和解析的工具类或者第三方库,例如Apache Commons Lang库中的DateFormatUtils和DateUtils类等,或者使用新的Java 8中的时间API中的DateTimeFormatter类。
总之,在使用日期格式化和解析的过程中需要注意格式的匹配和空值的处理,这样可以有效地避免出现ParseException异常。