繁体   English   中英

不可解析的日期,以冒号分隔时区

[英]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,请检查 通过 desugaringHow to use ThreeTenABP in Android Project 可用的 Java 8+ APIs

从Java7开始,处理+02:00,可以使用如下格式:

"yyyy-MM-dd'T'hh:mm:ssXXX"

这可以在SimpleDateFormat 文档中看到

使用可用作库的Joda Time可以最轻松地解析 ISO8601 日期格式。

似乎 Joda Time 的一种形式作为JSR310进入了 Java 8,但我还没有使用过它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM