0

我正在尝试将此日期转换为 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)

我试过这个。但是发生了同样的异常。有谁知道另一种(可能更好)的方法来实现这一点?

4

4 回答 4

1

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

乔达时间手册

样本:

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"));
于 2013-03-07T14:09:06.617 回答
0

除了您错过了 baraky 指出的毫秒数之外,在使用 Java 解析日期时,您还会遇到 ISO-8601 时区问题。在这个问题中得到了解决。

于 2013-03-07T14:06:27.947 回答
0

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

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

于 2013-03-07T14:08:45.627 回答
0

利用:

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

包括毫秒 (.74)

于 2013-03-07T14:01:03.347 回答