[英]Unparsable Date with colon-separated timezone
我正在尝试解析这个字符串
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)
但是我总是收到消息“无法解析的日期”我无法更改示例,因为它是来自网络服务的值。
难道“+02:00”而不是“+0200”有问题?
非常感谢
现代日期时间 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
从Trail: Date Time 中了解有关现代日期时间 API * 的更多信息。
* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和您的 Android API 工作级别仍然不符合 Java-8,请检查 通过 desugaring和How to use ThreeTenABP in Android Project 可用的 Java 8+ APIs 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.