[英]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.