Строка ISO 8601 для объекта даты / времени в Android
У меня есть строка в стандартном формате ISO 8601, которая содержит дату / время, возвращаемые веб-службой, например, так:
StringdtStart="2010-10-15T09:27:37Z"
Как мне перенести это в такой объект, как Time или Date? Изначально я хочу вывести это в другом формате, но позже с этим нужно будет что-то сделать (т. Е., Возможно, использовать в другом формате).
Этот вопрос был задан в 2010 году, и тогда было правильно, что вам следует использовать либо SimpleDateFormat, либо Joda-Time . Это было довольно давно. Сегодня используйте
InstantiStart= Instant.parse(dtStart);
Да, это так просто. Ваша строка находится в формате ISO 8601, и классы из java.time, современного Java date and time API, анализируют ISO 8601 без какого-либо явного форматирования. Instant является лишь одним из таких классов.
Редактировать: Вопрос: требуется Android API 26 - как насчет поддержки более старых версий?
Да, java.time прекрасно работает на старых и новых устройствах Android. Для этого просто требуется как минимум Java 6.
В Java 8 и более поздних версиях, а также на более новых устройствах Android (начиная с уровня API 26) современный API является встроенным.
В Java 6 и 7 получаем бэкпорт ThreeTen, бэкпорт новых классов (ThreeTen для JSR 310; смотрите ссылки внизу).
На (более старом) Android используйте версию ThreeTen Backport для Android. Он называется ThreeTenABP. И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.