2010-07-06 74 views
2

你好,我試圖用SimpleDateFormatter來解析日期Wed, 30 Jun 2010 15:07:06 CSTSimpleDateFormatter不會解析!

我使用下面的代碼

public static SimpleDateFormat postedformat = 
    new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 
Date newDate = new Date(posteformat.parse("Wed, 30 Jun 2010 15:07:06 CST")); 

,但我得到一個IllegalArgumentException。請幫忙!

+0

哪一行是你得到IllegalArgumentException? – 2010-07-06 08:24:24

+0

獲取解析調用的異常 – schwiz 2010-07-06 08:28:04

+2

順便說一句:不要使用SimpleDateFormat作爲常量。由於SimpleDateFormat的設計問題,它不能一次由多個線程安全使用。避免此問題最安全的方法是在需要使用SimpleDateFormat時始終創建一個新實例。 – 2010-07-06 08:36:51

回答

4

postedformat.parse()返回一個Date,並且沒有Date(Date)的構造函數。

想必刪除調用new Date,所以你說Date newDate = poste....就足夠了

+0

...如果是這樣,你只需要在解析表達式後添加.getTime()以便使用構造函數new Date(Long)。 – vlood 2010-07-06 08:38:35

+0

好抓!解析結果已經是一個Date對象。但後來我期望編譯時錯誤,而不是運行時問題。可能是問題中的拼寫錯誤。 – 2010-07-06 08:38:47

+0

這是問題的感謝 – schwiz 2010-07-06 08:40:46

3

您的代碼片段不編譯。這一細小的改動成功地編譯和解析:

public static void main(String[] args) throws ParseException { 
    SimpleDateFormat postedformat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 
    Date newDate = postedformat.parse("Wed, 30 Jun 2010 15:07:06 CST"); 
    System.out.println("newDate = " + newDate); 
} 

這是Mac OS X上使用Java 6

1

沒有java.util.Date()構造函數,一個java.util.Date作爲參數

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class DateFormat { 
    public static SimpleDateFormat postedformat = 
     new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z"); 
    public static void main(String[] args) { 
     try { 
      Date newDate = postedformat.parse("Wed, 30 Jun 2010 15:07:06 CST"); 
      System.out.println("Date: " + newDate); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

輸出:

Date: Wed Jun 30 22:07:06 BST 2010 
+0

但你應該不能用'new Date(new Date())編譯''' – 2010-07-06 08:42:47

1

javadoc示例顯示了unescap ed逗號,但美國的區域設置。因此,無論嘗試逃避逗號(亞倫建議),或使用其他構造和設置區域設置:

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); 

另一個問題可能是這是對過時的手,ambigious上的時區(「CST」)其他(根據java.util.TimeZone的javadoc)。測試,如果它沒有時區屬性(格式爲字符串和值)。