解析时间时SimpleDateFormat parseexception

时间:2012-09-10 13:11:48

标签: java date date-format simpledateformat

我已将一些日期转换为字符串,并使用

将它们存储在我的数据库中
      DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");

他们看起来像这样:“12-09-2012 02:33:00”当他们作为字符串出现时

然后我尝试使用

检索它们
      DateFormat formatter = new SimpleDateFormat("hh:mm:ss"); 

这给了我一个parseexception,说它是不可解释的日期,这是异常消息:

java.text.ParseException:Unparseable date:“12-09-2012 02:33:00”(偏移2处)

以下是一些代码,可以更好地理解我在做什么:

    String start="";
    String slut="";
    DateFormat formatterday = new SimpleDateFormat("hh:mm:ss");

            start=formatterday.format(formatterday.parse(a.startTime));
            slut=formatterday.format(formatterday.parse(a.endTime));  

我尝试将我的语句分开,以便先解析然后格式化,并且错误似乎在解析期间出现。

2 个答案:

答案 0 :(得分:2)

@Ken你的a.startTime变量的日期格式应该是“hh:mm:ss”格式。

如果您的a.startTime值类似于02:33:00,那么您的代码应该有效。

请检查您的a.startTime值并使用正确的日期格式。

答案 1 :(得分:2)

简单日期格式接受特定模式,而字符串值“12-09-2012 02:33:00”,显然不遵循给定模式“hh:mm:ss”。要将原始日期字符串转换为日期对象,您需要使用原始模式。

简单示例:

DateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
DateFormat formatter2 = new SimpleDateFormat("hh:mm:ss");

String originalDateValue = "12-09-2012 02:33:00";
Date originalDate = formatter1.parse( originalDateValue );

String shortDateValue = formatter2.format( originalDate );
Date shortDate = formatter2.parse( shortDateValue );

System.out.println( originalDateValue );
System.out.println( originalDate );

System.out.println( shortDateValue );
System.out.println( shortDate );

这将打印出来:

12-09-2012 02:33:00
Wed Sep 12 02:33:00 CEST 2012
02:33:00
Thu Jan 01 02:33:00 CET 1970

请注意,shortDate从时代开始就具有价值 - > 1.1.1970。