【问题标题】:ParseException while attempting String to Date parsing尝试字符串到日期解析时出现 ParseException
【发布时间】:2013-03-07 13:55:42
【问题描述】:

我正在尝试将此日期转换为 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。但是发生了同样的异常。有谁知道另一种(可能更好)的方法来实现这一点?

【问题讨论】:

  • 我认为你的字符串 .74 中有毫秒部分,但在你的格式字符串中没有提到它
  • 这是 ISO 8601 格式。这个 SO 问题可能会对您有所帮助:stackoverflow.com/questions/2201925/…
  • @Abu 哦.. 我 mssd 它.. bt 它没有取得任何进展。现在我已经使用 Joda-Time 并开始工作了。谢谢你的回复:)
  • @MiguelPrz thanx bro.. 该链接对我有很大帮助:)

标签: java android date timezone


【解决方案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"));

【讨论】:

    【解决方案2】:

    用途:

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

    包括毫秒 (.74)

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-15
          • 2014-07-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多