String to Date解析java

时间:2014-05-07 14:50:53

标签: java date datetime

我想将字符串Thu Apr 03 07:53:53 BST 2014解析为java中的Date对象。我不知道如何处理BST'部分 - 我试过这个

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

但获得无法解释的日期:" Thu Apr 03 07:53:53 BST 2014"

5 个答案:

答案 0 :(得分:1)

您错过了BST部分。使用zzz

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

答案 1 :(得分:1)

这是因为日期与格式字符串不匹配。日期有一个时区,但格式字符串没有。

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);

答案 2 :(得分:0)

您可以使用Joda Time库。

答案 3 :(得分:0)

使用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)

答案 4 :(得分:0)

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

您的时间格式与字符串不匹配。您错过了格式中的z,它指的是时区。有关详细信息SimpleDateFormat

,请查看此链接