Android API 25 但不是 22 或 23 中的无法解析的日期异常

Unparseable date exception in Android API 25 but not 22 or 23

我一直在开发我的应用程序并使用 Api 22 and 23 的模拟器和设备进行测试,但是当我今天在 API 25Version 7.1 Nougat 的设备上进行测试时,我突然遇到以下异常:

W/System.err: java.text.ParseException: Unparseable date: "2017-02-08 18:39:21+00"
W/System.err:     at java.text.DateFormat.parse(DateFormat.java:358)

我正在使用以下模式 "yyyy-MM-dd HH:mm:ssZ" 解析日期 "2017-02-08 18:39:21+00",在我在模拟器 运行 API 25 中进行测试之前,它一直运行良好,我也尝试过它在 Nexus 6P 运行 相同的版本上,我得到相同的异常。

下面这个方法是API 25上出现异常的地方。它在我正在测试的其他版本上运行良好。

private static final String SERVER_DATE_FORMAT = "yyyy-MM-dd HH:mm:ssZ";

public static Date javaDateFromStringDate(String stringDate) throws ParseException {
    SimpleDateFormat format = new SimpleDateFormat(SERVER_DATE_FORMAT, Locale.getDefault());
    return format.parse(stringDate);
}

答案确实是每个 the documentation 对 two-digit 个时区使用 X。感谢评论中的@commonsware 和@blizzard。 Android 似乎并不介意您将 Z 用于 two-digit 时区,但在 Nougat.

中变得更加严格