无法解析日期 ["2022-02-21 13:26:59.213+00:00"]: 无效时区指示符 ' ' - 使用 Retrofit 和 SimpleDateFormat

Failed to parse date ["2022-02-21 13:26:59.213+00:00"]: Invalid time zone indicator ' ' - Using Retrofit and SimpleDateFormat

我正在使用 Retrofit 从 Android 应用中使用 C# webapi。我一直收到错误消息:

Failed to parse date ["2022-02-21 12:10:18.043+00:00"]: Invalid time zone indicator ' '

我用于 return 来自 C# dotnet api 的日期值的格式是:

"yyyy-MM-dd HH:mm:ss.fffzzz"

我在 this page 上找到了格式设置选项。

我在 Android 端使用的格式是:

"yyyy-MM-dd'T'HH:mm:ss.SSSZ"

并且 Gson 选项基于 SimpleDateFormat

    String dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
    Gson gson = new GsonBuilder()
            .setDateFormat(dateFormat)
            .create();

我也试过这个:

    String dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX";
    Gson gson = new GsonBuilder()
            .setDateFormat(dateFormat)
            .create();

因为在 SimpleDateFormat 页面上:

但是得到同样的错误:

Caused by: java.text.ParseException: Failed to parse date ["2022-02-21 13:52:38.207+00:00"]: Invalid time zone indicator ' '

有没有人运行以前参与过这个?

我读了这个 post and there were a lot of responses explaining Z, but and a reference to ISO 8601,其中涵盖了偏移量:

它甚至指的是0偏移量:

根据您给定的日期:2022-02-21 12:10:18.043+00:00 您的日期格式应类似于 yyyy-MM-dd HH:mm:ss.SSSZ

来源:http://tutorials.jenkov.com/java-internationalization/simpledateformat.html

示例代码:

void parseDateExample() {
        String dateToParse = "2022-02-21 12:10:18.043+00:00";

        String dateFormat = "yyyy-MM-dd HH:mm:ss.SSSZ";

        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.getDefault());

        try {
            Date date = sdf.parse(dateToParse);
            Log.d("Mg-date", date.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }


    }