2010-05-23 150 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.