解析日期字符串时出错

时间:2014-02-03 10:12:06

标签: java date-parsing

我需要将此字符串解析为日期:

  

Mon Jun 10 00:00:00 CEST 2013

以下是我的工作:

SimpleDateFormat sdf = new SimpleDateFormat("ccc MMM dd HH:mm:ss z yyyy");
Date date = sdf.parse(dateString);

但我得到ParseException

Unparseable date: "Wed Oct 02 00:00:00 CEST 2013" (at offset 0)

请帮忙吗?

5 个答案:

答案 0 :(得分:3)

正如其他人所说,你需要EEE而不是ccc - 但你应该指定一个区域设置,这样它就不会尝试解析月份和使用系统默认语言环境的日期名称(和其他内容):

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

答案 1 :(得分:2)

您的格式错误。您需要使用EEE代替ccc,其中E表示Day name in week

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

查看有关SimpleDateFormat可用的所有有效模式的docs

答案 2 :(得分:2)

ccc替换为模式中的EEE以指定星期几:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

示例: https://gist.github.com/kmb385/8781482

答案 3 :(得分:1)

更新格式如下:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");

答案 4 :(得分:1)

这是一个Locale问题。这是因为日期在Locale之间的表示方式不同,因此如果Date格式不正确,JVM会触发异常。您可以通过设置自定义区域设置来解决此问题:

String str = "Mon Jun 10 00:00:00 EST 2013";
Locale.setDefault(Locale.US);
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date date = sdf.parse(str);
System.out.println(date);

IDE内容示例有效,因为默认语言环境为Locale.US