我正在通过opencsv从csv文件导入数据,以插入mysql数据库。opensv作为字符串导入,对于数据库中的1个字段,我需要以格式解析它到日期:yyyy-MM-dd。然而,我得到一个错误。
// This is the string that I have extracted from the csv file
String elem1 = nextLine[0];
// printing out to console I can see the string I wish to convert
System.out.println(elem1); => 2015-08-14
// Below is my code to parse the date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date convertedCurrentDate = sdf.parse(elem1);
String date=sdf.format(convertedCurrentDate );
// printing date to console gives me 2015-08-14
System.out.println(date);
如上所述,将日期打印到控制台显示为2015-08-14。但是我得到了错误:
java.text.ParseException: Unparseable date: ""
谁能给我一些建议,我做错了什么?行'java.util.Date convertedCurrentDate = sdf.parse(elem1);'是导致错误的行。
谢谢!
我也被下面的测试难住了
public class DateFormatterTest {
private static final String TEST_DATE = "2015-08-14";
@Test
public void SimpleDateFormatTest() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date convertedCurrentDate = sdf.parse(TEST_DATE);
String date=sdf.format(convertedCurrentDate );
assertEquals(TEST_DATE, date);
}
}
你用的是什么版本的Java ?我知道在最新的java 8 (8u61)和JodaTime中存在问题。
还可以尝试上面的测试,删除除Date代码以外的所有代码。
这是一个简单的例子:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = "7-Jun-2013";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
Java 8 update
String string = "August 21, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date); // 2015-09-21
我认为这是你想要的。很高兴帮助谢谢