2012-09-10 76 views
0

我已经转换了一些日期字符串,并将它们存储在使用SimpleDateFormat的解析ParseException的时间时

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

我的数据库,他们是这样的:“2012年12月9日2时33分○○秒”,当他们出来作为字符串

我则尝试使用

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

这给了我一个ParseException说这是和不可分析的日期,这是异常消息对它们进行检索:

java.text.ParseException:无法解析的日期:“2012年12月9日2点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)); 

我已经试过seaparating我的语句,所以我先解析,然后格式和错误似乎出现在解析。

+0

什么语言?什么平台? – Oded

+0

对不起,我应该提到。 starttime和endtime是以前从日期转换的字符串 – Ken

+0

@Ken你可以* System.out.println *他们(两个字符串)? – sp00m

回答

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。

+0

非常感谢您解释这个问题。澄清因素就是你对这种模式所说的话 – Ken

2

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

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

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

相关问题