0

我已经将一些日期转换为字符串并将它们存储在我的数据库中

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

当它们以字符串形式出现时,它们看起来像这样:“12-09-2012 02:33:00”

然后我尝试使用

      DateFormat formatter = new SimpleDateFormat("hh:mm:ss"); 

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

java.text.ParseException:无法解析的日期:“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));  

我尝试分离我的语句,以便我先解析然后格式化,并且错误似乎在解析过程中出现。

4

2 回答 2

2

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

如果您的 a.startTime 值类似于 02:33:00 那么您的代码应该可以工作。

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

于 2012-09-10T13:33:40.200 回答
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。

于 2012-09-10T13:37:27.207 回答