我在日期解析示例日期时遇到问题:
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