我很惭愧地问这个问题,但我别无选择。
我想将此字符串转换为日期:
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:
例外。
我不知道为什么会这样。
答案 0 :(得分:2)
这应该有效(在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
答案 1 :(得分:1)
问题是因为使用了错误的模式.Z代替 yyyy-MM-dd' 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");
答案 2 :(得分:1)
您的模式并不完全对应于输入字符串,您在格式的时区部分中有一个轻微的类型。
按以下方式更改格式以使其正常工作:
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
或者将输入字符串更改为:
String str = "2001-07-04T12:08:56.235-07:00";
答案 3 :(得分:1)
请使用Below Pattern,它可以正常使用
“YYYY-MM-dd'T'HH:MM:ss.SSSXXX”
答案 4 :(得分:0)
根据您使用的模式,您的输入字符串存在问题。 删除最后一个':'来自str变量。 改变:
String str = "2015-11-25T19:36:39.571+06:00";
in to:
String str = "2015-11-25T19:36:39.571+0600";
然后跑。它会起作用。 这是小提琴: working link