Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串到日期解析java_Java_Date_Datetime - Fatal编程技术网

字符串到日期解析java

字符串到日期解析java,java,date,datetime,Java,Date,Datetime,我想将字符串Thu Apr 03 07:53:53 BST 2014解析为java中的日期对象。我不知道如何处理“BST”部分-我已经试过了 date = new SimpleDateFormat("E MMM dd HH:mm:ss yyyy", Locale.ENGLISH).parse(string); 但是获得不可解析的日期:“2014年4月3日星期四07:53:53英国夏令时”你错过了英国夏令时的部分。对其使用zzz: date = new SimpleDateFormat("E M

我想将字符串
Thu Apr 03 07:53:53 BST 2014
解析为java中的日期对象。我不知道如何处理“BST”部分-我已经试过了

date = new SimpleDateFormat("E MMM dd HH:mm:ss yyyy", Locale.ENGLISH).parse(string);

但是获得不可解析的日期:“2014年4月3日星期四07:53:53英国夏令时”

你错过了英国夏令时的部分。对其使用
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);

使用您的语言环境尝试此选项

每种模式的描述

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)

您的时间格式与字符串不匹配。您的格式中缺少了z,它指的是时区。查看此链接以了解更多详细信息

字符串返回时带有“BST”,我想我将执行str.replace(“BST”),您不需要替换它。只要改变你的日期格式。这可能是一个替代方案,而不是一个解决方案。正如Luiggi所说。除非你想展示他们将如何使用这个替代方案,否则最好作为一个评论。
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)