将String转换为Date错误解析

时间:2013-11-07 19:01:08

标签: java string date format

我看了很多例子,仍然找不到符合我问题的答案。我现在已经被困了一个小时,需要帮助。

我有很多这样的字符串:

Wed, 06 Nov 2013 18:14:02

我创建了一个将这些字符串转换为Date的函数:

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

1 个答案:

答案 0 :(得分:1)

(当我最初回答问题时,使用的格式字符串为hh - 它已被更改。)

您正在使用hh作为12小时格式的小时部分 - 但提供使用“18”的字符串。你想要HH

此外,如果您知道值将始终使用英文名称,我建议明确指定区域设置。

我已经验证过,如果你明确指定了语言环境,那么代码肯定有效 - 至少在Oracle的Java 7实现中是这样的:

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

如果没有指定区域设置(但是HH)它不适合你,那可能是原因 - 可能是你的系统区域设置不是英文,所以它期待不同的月份和日期名称。