2013-08-06 69 views
2

解析器的電子郵件包含以下數據格式定義:這種Java日期格式有什麼問題?

private final static DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); 


if (line.startsWith("Date:")) { 
     try { 
      email.date = dateFormat.parse(line.substring(6)); 
     } catch (ParseException e) { 
       System.err.println("Unparsable: " + line.substring(6)); 
     } 

此代碼打印錯誤:

Unparsable: Mon, 15 Jan 2001 23:18:00 -0800 (PST) 

爲什麼格式不匹配?

EEE, d MMM yyyy HH:mm:ss Z 
+0

它的工作原理沒有 「(PST)」 的結尾? – Thilo

+0

這似乎工作'新的SimpleDateFormat(「EEE,d MMM yyyy HH:mm:ss Z」)。parse(「Mon,15 Jan 2001 23:18:00 -0800(PST)」)' –

+0

如果它不是@JonSkeet指出的語言環境問題,它可能也是線程問題(SimpleDateFormat不是線程安全的),但這似乎不太可能。 – Thilo

回答

6

它適用於我 - 但後來我在英文語言環境開始。這可能是問題 - 嘗試顯式指定區域,當你構建SimpleDateFormat

private final static DateFormat dateFormat = 
    new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.US); 

否則你當前的系統區域將被使用,如果這不是英語將試圖解析不同的月份和日期的名字。

0
DateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); 
    Date date=dateFormat.parse("Mon, 15 Jan 2001 23:18:00 -0800 (PST)"); 
    System.out.println(dateFormat.format(date)); 

我想這和它pritns

Tue, 16 Jan 2001 13:18:00 +0600 

我沒有得到任何錯誤