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

PDS*_*PDS 14 java date simpledateformat

我遇到了日期解析示例日期的问题:

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


parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013");
Run Code Online (Sandbox Code Playgroud)

得到例外

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

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

take:java.text.ParseException:Unparseable date:"Wed 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");
Run Code Online (Sandbox Code Playgroud)

Sot*_*lis 17

我会认为Locale.getDefault()你是pl-PL因为你似乎是在波兰.

因此,日期字符串中的英语单词会导致日期不可解析.

适当的波兰日期String就像是

"Wt pa? 16 00:00:00 -0500 2013"
Run Code Online (Sandbox Code Playgroud)

否则,将您更改LocaleLocale.ENGLISH以便SimpleDateFormat对象可以String使用英语单词解析日期.


hqt*_*hqt 8

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

希望这有帮助:)


Але*_*сей 5

我认为原始的Exception是由于Z您使用的格式。每个文档

Z   Time zone   RFC 822 time zone   -0800
Run Code Online (Sandbox Code Playgroud)

您最有可能打算使用小写字母 z