日期格式分析异常 - "EEE MMM dd HH:mm:ss Z yyyy"



我在日期解析示例日期时遇到问题:

SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault());

parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

出现异常

我想将此格式日期解析为 yyyy-MM-dd我尝试:

SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

拿:java.text.ParseException: 不可解析的日期: "星期三 Oct 16 00:00:00 CEST 2013"


好的,我更改为并工作:

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH);
Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");

我将假设Locale.getDefault()对你来说是pl-PL,因为你似乎在波兰。

因此,日期字符串中的英语单词会导致日期无法分析。

一个合适的波兰日期String应该是这样的

"Wt paź 16 00:00:00 -0500 2013"

否则,请将Locale更改为Locale.ENGLISH,以便 SimpleDateFormat 对象可以使用英语单词分析String日期。

而不是使用您和其他人通常不知道哪个默认值的Locale.default,您可以使用locale.ENGLISH来决定,因为我看到您的字符串日期是英文格式。如果您在其他国家/地区,格式会有所不同。

这是我的示例代码:

public static void main(String[] args) {
    try {
        SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH);
        Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
        System.out.println("date: " + date.toString());
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
}

结果将是 :date: Wed Oct 16 05:00:00 ICT 2013 。或者,您可以使用其字段来决定要打印此日期的哪个部分。

希望这对:)有所帮助

我认为原始异常是由于您的格式Z。根据文档:

Z   Time zone   RFC 822 time zone   -0800

很可能您打算使用小写z

最新更新