尝试String to Date解析时出现ParseException

时间:2013-03-07 13:55:42

标签: java android date timezone

我打算将此日期转换为2013-03-04T12:08:52.74 + 08:00

formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date date = formatter.parse(dateresult);

但它以异常结束

03-07 19:17:05.493: W/System.err(2006): java.text.ParseException: Unparseable date: "2013-03-04T12:08:52.74+08:00" (at offset 19)

我试过了this。但同样的例外发生了。有没有人知道另一种(可能更好的)方法来实现这个目标?

4 个答案:

答案 0 :(得分:1)

你可以使用joda-time。它支持ISO8601标准。

joda-time manual

样品:

DateTime dt = new DateTime("2013-03-04T12:08:52.74+08:00");
System.out.println(dt.toString());
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
System.out.println(
        fmt.parseDateTime("2013-03-04T12:08:52.74+08:00"));

答案 1 :(得分:0)

使用:

formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'");

包含毫秒(.74)

答案 2 :(得分:0)

除了你错过了baraky所指出的毫秒之外,你还会在使用Java解析日期时遇到ISO-8601时区问题。它已在this question中解决。

答案 3 :(得分:0)

此外,除了@ baraky的答案之外,您输入日期的时区格式不符合您的格式字符串规范。您的格式字符串有'Z'(字面字母Z)。您的输入字符串似乎具有X格式。因此您可能希望使用:

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