2010-05-23 151 views
0

我想從字符串解析java.util.Date。我想下面的代碼,但得到意想不到的輸出:Java - 從字符串解析日期

Date getDate() { 
    Date date = null; 

    SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd"); 
    try { 
     date = sdf.parse("Sat May 11"); 
    } catch (ParseException ex) { 
     Logger.getLogger(URLExtractor.class.getName()).log(Level.SEVERE, null, ex); 
     return null; 
    } 

    return date; 
} 

當我運行上面的代碼,我得到了以下的輸出:

Mon May 11 00:00:00 IST 1970 
+0

您期待什麼? – 2010-05-23 10:17:36

+0

因爲你期望/想要輸出什麼? – bakkal 2010-05-23 10:21:22

+0

我期待「週六」而不是「週一」。 – 2010-05-23 10:25:46

回答

6

您還沒有指定一年中你的字符串。默認的年份是1970年。而在1970年5月11日是星期一 - SimpleDateFormat簡直是忽略了你的字符串中的週日。

javadoc of DateFormat

自1970年1月1日,00:00:00 GMT的日期表示爲Date對象或 作爲毫秒。

0

如果年份是你可以爲年增y問題:

public Date getDate() { 
    Date date = null; 

    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd y"); 
    try { 
     date = sdf.parse("May 11 2010"); 
    } catch (ParseException ex) { 
     Logger.getLogger(URLExtractor.class.getName()).log(Level.SEVERE, null, ex); 
     return null; 
    } 

    return date; 
} 
System.out.println(getDate()); 

Tue May 11 00:00:00 EDT 2010

編輯:

要獲得一週的正確的一天,你需要指定日期(與年份)。我編輯了上面的代碼。

0

在格式中指定一年以獲取正確的輸出。

如果您未指定任何年份,則默認值爲1970.