0

我查看了许多示例,但仍然找不到与我的问题相匹配的答案。我现在被困了一个小时,需要帮助。

我有许多格式如下的字符串:

Wed, 06 Nov 2013 18:14:02

我创建了一个函数来将这些字符串转换为日期:

private static Date toDate(String pubDateString) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");

    pubDateString = pubDateString.substring(0, 25);
    Date date = null;
    try {
        date = dateFormat.parse(pubDateString);
    } catch (ParseException e1) {
        e1.printStackTrace();
    }

    return date;
}

我得到的是 ParseException: java.text.ParseException: Unparseable date: "Wed, 06 Nov 2013 18:14:02"

谁能帮我完成我的第一个挑战?谢谢。

编辑:我试过 HH 和 kk

4

1 回答 1

1

(当我最初回答这个问题时,使用的格式字符串hh- 它已经改变了。)

您正在使用hh小时部分,这是一种 12 小时格式 - 但提供了一个使用“18”的字符串。你想要HH

此外,如果您知道这些值将始终使用英文名称,我建议明确指定语言环境。

我已经验证,如果您明确指定语言环境,代码肯定可以工作 - 至少在 Oracle 的 Java 7 实现下:

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

如果在没有指定语言环境(但使用HH)的情况下它对您不起作用,那可能就是原因 - 大概您的系统语言环境不是英语,所以它期望不同的月份和日期名称。

于 2013-11-07T19:02:28.553 回答