【问题标题】:Unparseable date: "2013-07-11T13:41:22.000Z" (at offset 23)无法解析的日期:“2013-07-11T13:41:22.000Z”(偏移量 23)
【发布时间】:2013-08-28 08:50:09
【问题描述】:

谁能告诉我为什么我得到了这个例外?

08-28 08:47:05.246: D/DateParser(4238): 接收到的用于解析的字符串是 2013-08-05T12:13:49.000Z

private final static String DATE_FORMAT_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";


public static Date parseDate(String stringToParse) {
        Date date = null;
        try {
            date = new SimpleDateFormat(DATE_FORMAT_PATTERN).parse(stringToParse);
        } catch (ParseException e) {
            Logger.logError(TAG, e);
        }
        return null;
    }

08-28 08:47:05.246: E/DateParser(4238): Exception: java.text.ParseException: Unparseable date: "2013-08-05T12:13:49.000Z" (at offset 23)

【问题讨论】:

    标签: java


    【解决方案1】:

    尝试使用

    String DATE_FORMAT_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
    

    末尾的Z 通常是时区偏移量。如果你不需要它,也许你可以把它放在两边。

    【讨论】:

      【解决方案2】:

      在格式字符串的末尾使用X 而不是Z

      yyyy-MM-dd'T'HH:mm:ss.SSSX
      

      解析 ISO-8601 格式的时区偏移量。

      (仅当您使用 Java 7 时才有效。请参阅 this question)。

      【讨论】:

        【解决方案3】:

        您的时间字符串中的Z 不是有效的时区标识符,但您指定的时间格式需要一个时区标识符。更具体地说,它需要一个 RFC 822 timezone 标识符,通常为 4 位。

        【讨论】:

          【解决方案4】:

          从java-8你可以直接使用ZonedDateTimeInstant如果它在ISO_INSTANT

          ZonedDateTime.parse("2013-08-05T12:13:49.000Z")
          
          Instant.parse("2013-08-05T12:13:49.000Z")
          

          【讨论】:

            猜你喜欢
            • 2015-02-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-01-08
            • 1970-01-01
            • 1970-01-01
            • 2014-07-24
            • 2015-10-31
            相关资源
            最近更新 更多