抛出一个说不可解析格式的异常

时间:2013-07-26 13:35:08

标签: java date simpledateformat

我需要从数据库中获取日期并将其转换为实用日期...

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dob = rst.getString("dob");
java.util.Date DateTemp = new java.sql.Date(formatter.parse(dob).getTime());

但它引发了一个例外unparseable format

3 个答案:

答案 0 :(得分:3)

只是以简单的方式回答您的问题。您的dob值格式不正确。 formatter.parse(dob)无法正常工作,因为它无法解析(或尝试将数据提取并更改为适当的格式)。

现在更改格式(从DB格式到应用程序格式):

final String OLD_FORMAT = "yyyy/MM/dd";
final String NEW_FORMAT = "dd/MM/yyyy";

String oldDateString = rst.getString("dob").replaceAll("-","/");//you to need to replace all the all dashes with slashes
String newDateString;

SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
Date d = sdf.parse(oldDateString);
sdf.applyPattern(NEW_FORMAT);
newDateString = sdf.format(d);

来源:

How can I change the date format in Java?

答案 1 :(得分:1)

只需使用ResultSet.getDate,它会返回java.sql.Date,其范围为java.util.Date,因此您可以在需要java.util.Date的地方使用它。

对于ParseException:DATE列的ResultSet.getString以yyyy-MM-dd格式返回日期,你应该用这种格式解析它。

答案 2 :(得分:1)

  

在数据库中存储为yyyy / MM / dd(例如2013/11/28),我需要在应用程序中将其用作dd / MM / yyyy(例如2013年11月28日)

然后你解析字符串的第一个格式化程序应该是yyyy/MM/dd,然后将日期对象格式化为字符串应该是dd/MM/yyyy

此外,有适当的数据类型[DATE,DATETIME等]在DB表中存储日期,不要使用字符串[CHAR,VARCHAR]。

相关问题