2014-01-13 207 views
8

即時消息想要將日期字符串解析爲日期。我正在尋找其他一些問題,但我沒有找到答案。無法解析日期字符串

String mail_delivered = "31.10.2013 17:57:58 CET"; 

try { 
    DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z", Locale.GERMAN); 
    Date result = df.parse(mail_delivered); 
    System.out.println(result); 
} catch (ParseException pe) { 
    pe.printStackTrace(); 
} 

的錯誤信息是java.text.ParseException:Unparseable date: "[31.10.2013 17:57:58 CET]",我不知道什麼是錯。

你能幫我嗎。 在此先感謝。


編輯:好的。我把它變成英語,但我仍然是同樣的問題。我不想改變輸入,因爲它來自郵件數據庫。任何其他想法?

String mail_delivered = "31.10.2013 17:57:58 CET"; 

try { 
    DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z", Locale.ENGLISH); 
    Date result = df.parse(mail_delivered); 
    System.out.println(result); 
} catch (ParseException pe) { 
    pe.printStackTrace(); 
} 

我發現這個問題。我是盲人。來自數據庫的Sting是[31.10.2013 17:57:58 CET],而不是31.10.2013 17:57:58 CET

謝謝。

+0

使用 - 而不是。在dd.MM.yyyy – Saqib

+0

問題似乎與最後一部分...當它被刪除,它的作品。也許德語中的「CET」有所不同? –

+0

對我來說工作很好..給我這個o/p ..星期四10月31日22:27:58 IST 2013 –

回答

9

在德語中,「中歐時間」是「MitteleuropäischeZeit」,所以如果您想使用Locale.GERMAN,請將CET更改爲MEZ並且它可以正常工作。

String mail_delivered = "31.10.2013 17:57:58 MEZ"; 

對於一個給定的語言環境的所有法律時區的字符串列表,使用此:

DateFormatSymbols.getInstance(Locale.GERMAN).getZoneStrings() 
+1

來源:http://en.wikipedia.org/wiki/Central_European_Time –

+0

謝謝你的回答。我沒有想到這一點,因爲在德國的維基百科中,你也使用CET簽名。 – user3190987

0

試試這個:

public static void main(String[] args)throws Exception { 
     // TODO Auto-generated method stub 
     //Middle European Time (MET or MEZ-German) 
     String mail_delivered = "31.10.2013 17:57:58 MET"; 
     try { 
      SimpleDateFormat df= new SimpleDateFormat("dd.MM.yyyy HH:mm:ss z",Locale.GERMAN); 
      Date result = df.parse(mail_delivered); 
      System.out.println(result); 
     } catch (ParseException pe) { 
      pe.printStackTrace(); 
     } 
    } 

輸出: - 週四22年10月31日: 27:58 IST 2013

+0

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html –

+0

You are right.H指定(0-23)格式,其中h指定(1-12).I是運行兩個格式程序並粘貼小的。我改變了張貼的答案。謝謝。 –