Android

ISO 8601 String to Date/Time object in Android

Строка ISO 8601 для объекта даты / времени в Android

У меня есть строка в стандартном формате ISO 8601, которая содержит дату / время, возвращаемые веб-службой, например, так:

String dtStart = "2010-10-15T09:27:37Z"

Как мне перенести это в такой объект, как Time или Date? Изначально я хочу вывести это в другом формате, но позже с этим нужно будет что-то сделать (т. Е., Возможно, использовать в другом формате).

Приветствия

Переведено автоматически
Ответ 1
String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
try {
Date date = format.parse(dtStart);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}

Это то, что вы ищете. Существует существующее сообщение об этой проблеме.

Ответ 2

Этот вопрос был задан в 2010 году, и тогда было правильно, что вам следует использовать либо SimpleDateFormat, либо Joda-Time . Это было довольно давно. Сегодня используйте

    Instant iStart = 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 с подпакетами.

Ссылки

Ответ 3

Вы можете использовать метод синтаксического анализа SimpleDateFormat в Java или использовать DateTimeFormat в JodaTime для создания DateTimeFormatter и преобразования в объект DateTime соответственно

Ответ 4

Если вы используете current java.time или threetenbp, просто проанализируйте это следующим образом:

ZonedDateTime dt = ZonedDateTime.parse(dtStart);

Теперь вы можете получить доступ к значениям даты и времени, таким как год, месяц, час и т.д.

java android