Почему я получаю исключение при разборе действительной даты UTC с GSON?
На Android пытается разобрать эту строку даты:2017-02-21T00:45:03-05:00
с GSON 2.8.0 с использованием UtcDateTypeAdapter я получаю исключение:
Caused by: com.google.gson.JsonParseException: java.text.ParseException: Failed to parse date ["2017-02-21T00:45:03-05:00']: null (at offset 0)
at com.google.gson.typeadapters.UtcDateTypeAdapter.read(UtcDateTypeAdapter.java:66)
at com.google.gson.typeadapters.UtcDateTypeAdapter.read(UtcDateTypeAdapter.java:39)
...
Все же ясно, что дата в допустимом формате.
1 ответ
Получается, что ключевые вещи заключались в том, что я использовал не EN (то есть AR) локаль в более старых (API < 23) версиях Android и то, как идентификаторы часовых поясов обрабатываются в этой локали.
Оскорбительный код:
TimeZone timezone = TimeZone.getTimeZone(timezoneId);
if (!timezone.getID().equals(timezoneId)) {
throw new IndexOutOfBoundsException();
}
Как и в более старых версиях Android, значения в приведенном выше коде для timezone.getID() и timezoneId:GMT-٠٥:٠٠
против GMT-05:00