这是因为日期与格式字符串不匹配。日期有时区,但格式字符串没有。
我想用java将字符串Thu Apr 03 07:53:53 BST 2014
解析为Date对象。我不知道如何处理"BST"部分——我试过这个
date = new SimpleDateFormat("E MMM dd HH:mm:ss yyyy", Locale.ENGLISH).parse(string);
但获得无法解析的日期:"2014年4月3日星期四英国夏令时07:53:53">
您缺少BST
部分。使用zzz
:
date = new SimpleDateFormat("E MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH).parse(string);
Thu Apr 03 07:53:53 BST 2014
E MMM dd HH:mm:ss ??? yyyy
在格式字符串中添加时区(z
(可以解决您的问题:
date = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH)
.parse(string);
您可以使用Joda Time库。
使用SimpleDateFormat在您的区域设置中尝试这个。
// Thu Apr 03 07:53:53 BST 2014
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy", Locale.ENGLISH);
Date date = format.parse("Thu Apr 03 07:53:53 BST 2014");
每个图案的描述
EEE - Day name in week (in 3 chars)
MMM - Month in year (in 3 chars)
dd - Day in month (in 2 digits)
kk - Hour in day (1-24) (in 2 digits)
mm - Minute in hour (in 2 digits)
ss - Second in minute (in 2 digits)
z - Time zone (General time zone)
yyyy - Year (in 4 digits)
date = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH)
.parse(string)
您的时间格式与字符串不匹配。您错过了格式中的z,它指的是时区。查看此链接了解更多详细信息SimpleDateFormat