Java - 从字符串解析日期

时间:2010-05-23 10:15:18

标签: java date parsing

我想从String中解析java.util.Date。我尝试了以下代码,但得到了意想不到的输出:

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

3 个答案:

答案 0 :(得分:6)

您没有在字符串中指定一年。默认年份是1970年。1970年5月11日是星期一 - SimpleDateFormat只是忽略了字符串中的工作日。

来自javadoc of DateFormat

  

日期表示为Date对象或    自1970年1月1日00:00:00 GMT以来的毫秒数。

答案 1 :(得分: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

修改

要获得一周中的正确日期,您需要指定日期(带年份)。我编辑了上面的代码。

答案 2 :(得分:0)

在格式中指定一年以获得正确的输出。

如果您未指定任何年份,则默认值为1970。