2012-09-10 113 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值並使用正確的日期格式。

相關問題