无法解释的日期:“2015年7月22日00:30”

时间:2015-07-22 20:11:18

标签: java date

不知何故,我一遍又一遍地得到这个错误,并且不知道为什么。这是我的代码:

Date parseDate() {
    String date = "2015, July 22, 00:30";
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy, MMM dd, HH:mm");
    try {
        return formatter.parse(date); // Here: Unparseable date: "2015, July 22, 00:30"
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return null;
}

任何人都知道为什么会这样?怎么解决?

3 个答案:

答案 0 :(得分:2)

如果您的默认语言环境在月份,工作日等方面具有不同的名称,则需要提供Locale。由于您只需将其添加到constructor即可,您可以使用以下内容:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy, MMM dd, HH:mm", Locale.US);

顺便说一句:如果您只想parse字符串,则不需要使用四个 M 。但如果您希望将format给定的Date对象添加到字符串,则需要添加额外的 M

答案 1 :(得分:1)

问题在于本月,您使用的是MMM而不是MMMMM

SimpleDateFormat formatter = new SimpleDateFormat("yyyy, MMMMM dd, HH:mm");

答案 2 :(得分:0)

月份需要4 M而不是3:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy, MMMM dd, HH:mm");

3是月份名称的缩写形式,因此“January”变为“Jan”,依此类推......