繁体   English   中英

SimpleDateFormat无法将字符串解析为Date

[英]SimpleDateFormat can not parse string to Date

我很asking愧地问这个问题,但是我别无选择。

我想将此字符串转换为日期:

 2015-11-25T19:36:39.571+06:00

要转换它,我使用SImpleDateFormat:

String str = "2015-11-25T19:36:39.571+06:00";       

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

Date date = format.parse(str);

System.out.println(date);

当我启动此代码时,它会给我java.text.ParseException: Unparseable date:异常。

我不知道为什么会这样。

这应该可以工作(在Java 7中)

    String str = "2015-11-25T19:36:39.571+06:00";       

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
    Date date = format.parse(str);

    System.out.println(date);

XXX在Java 7中可以作为时区偏移量使用,请参见Javadoc http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

问题是因为使用了错误的模式.Z代替yyyy-MM-dd'T'HH:mm:ss.SSSZ使用模式yyyy-MM-dd'T'HH:mm:ss.SSSX

Z以RFC 822时区格式表示时区,例如-0800

因此,您的代码将如下所示。

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");

您的模式并不完全对应于输入字符串,在格式的时区部分中您输入的类型略有不同。

通过以下方式更改格式以使其起作用:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

或将输入字符串更改为:

String str = "2001-07-04T12:08:56.235-07:00"; 

请使用以下图案,效果很好

“ yyyy-MM-dd'T'HH:mm:ss.SSSXXX”

根据您使用的模式,您的输入String出现问题。 从str变量中删除最后一个':'。 更改:

    String str = "2015-11-25T19:36:39.571+06:00"; 

进入:

    String str = "2015-11-25T19:36:39.571+0600"; 

并运行。 会的 这是小提琴: 工作链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM