Легко, когда знаешь как.
String receivedDateTimeString = "2020-04-13T12:36:13Z";
XMLGregorianCalendar xmlgc = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(receivedDateTimeString);
System.out.println(xmlgc);
Вывод:
2020-04-13T12: 36: 13Z
ZonedDateTime.toString()
иногда создает формат ISO 8601 (а иногда и расширенный формат с идентификатором зоны, который не является частью ISO 8601). В вашем случае у вас есть чистый ISO 8601. Даты и время в документах XML используют вариант ISO 8601, это достаточно близко, чтобы мы могли считать их одинаковыми для нашей цели. Таким образом, экземпляр XMLGregorianCalendar
создается непосредственно из строки ISO 8601, а его метод toString
возвращает ту же строку ISO 8601.
ThreeTen Backport позволяет использовать ZonedDateTime в Java 7
Вы можете, и вы также можете предпочесть использовать ZonedDateTime
в Java 7, а не XMLGregorianCalendar
. Это использование проходит через ThreeTen Backport, бэкпорт от java .time до Java 6 и 7, см. Ссылки внизу.
import org.threeten.bp.ZonedDateTime;
public class DemoZonedDateTimeInJava7 {
public static void main(String[] args) {
String receivedDateTimeString = "2020-04-13T12:36:13Z";
ZonedDateTime zdt = ZonedDateTime.parse(receivedDateTimeString);
System.out.println(zdt);
}
}
2020-04-13T12: 36: 13Z
- В Java 8 и новее, а также на более новых Android устройствах (начиная с уровня API 26) современный API встроен.
- В не- Android Java 6 и 7 получают ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. Ссылки внизу).
- On (более старые) Android используйте Android издание ThreeTen Backport. Это называется ThreeTenABP. И убедитесь, что вы импортировали классы даты и времени из
org.threeten.bp
с подпакетами.
Ссылки