当我尝试从excel文件导入数据时,我收到错误(Unparseable date:“18-11-2003”)。无法解析文件中的日期
if(row.getCell(16)!=null){
String dobb=null;
Date dob=null;
row.getCell(16).setCellType(row.getCell(16).CELL_TYPE_STRING);
dobb=row.getCell(16).getStringCellValue();
System.out.println(dobb);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
dob = (Date)simpleDateFormat.parse(dobb);//error..... Unparseable date: "18–11–2003"
System.out.println("dateeee"+dob);
} catch (ParseException e) {
e.printStackTrace();
//dob=new Date();
}
答案 0 :(得分:2)
看起来指定的“18-11-2003”日期包含u2013
Unicode字符,而不是u002d
的普通短划线。
以下是使用从问题中复制粘贴的字符串的示例:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
try {
String trouble = "18–11–2003";
String goodOne = "18-11-2003";
Date date = simpleDateFormat.parse(goodOne);
//Date date = simpleDateFormat.parse(trouble);
System.out.println(String.format ("\\u%04x", (int)trouble.charAt(2)));
System.out.println(String.format ("\\u%04x", (int)goodOne.charAt(2)));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:1)
实际日期(–
)中的字符与日期格式(-
)中的字符不同。
此代码:
public static void main(String[] args) {
System.out.println((int)'–');
System.out.println((int)'-');
}
产生这个结果:
8211
45
你可以做几件事:
replace()
)上执行dateStr = dateStr.replace("–", "-");
,用实际的ASCII连字符替换奇数连字符。的 *推荐* 强> "dd–MM–yyyy"
更改为"dd–MM–yyyy"