我正在尝试解析此String
2014-04-04T14:28:38 + 02:00
它应该是ISO 8601格式。但我不能解析它到正确的日期。 我尝试了以下内容:
String example = "2014-04-04T14:28:38+02:00"
public final static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz")
Date tempDate = df.parse(example)
但我总是得到“无法解析日期”的消息 我无法更改示例,因为它是来自Web服务的值。
是否存在“+02:00”代替“+0200”的问题?
非常感谢
答案 0 :(得分:2)
现代日期时间 API 基于 ISO 8601,因此,您不需要显式使用解析器(例如 DateTimeFormatter
)来解析给定的日期时间字符串已经采用 ISO 8601 格式。
演示:
import java.time.OffsetDateTime;
import java.util.Date;
public class Main {
public static void main(String args[]) {
OffsetDateTime odt = OffsetDateTime.parse("2014-04-04T14:28:38+02:00");
System.out.println(odt);
// In case you need java.util.Date
Date date = Date.from(odt.toInstant());
// ...
}
}
输出:
2014-04-04T14:28:38+02:00
从 modern date-time API 中了解有关 Trail: Date Time* 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring 和 How to use ThreeTenABP in Android Project。
答案 1 :(得分:1)
答案 2 :(得分:0)