2011-12-19 48 views
0

java.text.ParseException:無法解析的日期:「星期六05月01日00:00:00 EDT 2010」試圖字符串日期轉換成日期

我試圖解析使用的SimpleDateFormat類此日期。

java.util.Date prevStartDate = new Date(); 
java.util.Date prevStopDate = new Date(); 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
prevStartDate = dateFormat.format(startDateLY); 
+3

你試圖解析日期看上去一點也不像你已經在自己的日期格式給我們看。事實上,我根本沒有在你的問題中看到對'parse'的調用。那是相關的代碼嗎? – Paul 2011-12-19 22:12:56

回答

3

那將是因爲你使用的yyyy-MM-dd格式 - 你必須在你的輸入添加的每個參數,該格式。

它看起來像你的格式是E MMM dd HH:mm:ss z yyyy

所以,你需要從一個轉換到另一個:

static DateFormat extended = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 
static DateFormat simple = new SimpleDateFormat("yyyy-MM-dd"); 

String reformat(String extendedString) { 
    Date yourDate = extended.parse(extendedString); 
    String simpleString = simple.format(yourDate); 
    return simpleString; 
} 

或者,

String reformat(String dateString) { 
    return simple.format(extended.parse(dateString)); 
} 
1
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 
Date date = (Date)formatter.parse("Sat May 01 00:00:00 EDT 2010"); 
String string = new String(date.getYear() + "-" + date.getMonth() + "-" + date.getDay()); 

應更好地工作,然後只是yyyy-MM-dd

+0

我需要一個MySQL插入的yyyy-mm-dd – kbrin80 2011-12-19 22:16:54

+0

@ kbrin8 - 我已經更新了答案,給了你一個格式的字符串 – Grammin 2011-12-19 22:21:45

+0

有幾個問題與此。首先,它使用格式化程序進行解析(良好),但爲何不使用格式化程序進行輸出?其次,使用'new String'幾乎總是一個糟糕的決定,實際上它在這種情況下也是強制備份數組的副本。 – corsiKa 2011-12-19 22:23:19