ThreeTen Backport
java.time, современный Java-интерфейс даты и времени, перенесен в бэкпорт.Так что просто сделайте, как в Java 8:
String text = Instant.now().toString();
Запуск только сейчас, я получил:
2018-12-19T13: 37: 37.186Z
- В Java 8 и более поздних версиях и на более новых устройствах Android (от уровня API 26) встроен современный API.
- В Java 6 и 7 получают ThreeTen Backport, бэкпортновые классы (ThreeTen для JSR 310; см. ссылки внизу).
- На старых версиях Android используется версия ThreeTen Backport для Android.Это называется ThreeTenABP.И убедитесь, что вы импортируете классы даты и времени из
org.threeten.bp
с подпакетами.
Устаревший SimpleDateFormat
Если вы не хотите полагаться на внешнюю зависимость, пока выперейти на Java 8 или выше, (наиболее) правильное решение - это комбинация частей из двух других ответов (один из них теперь удален):
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXX");
sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
String text = sdf.format(System.currentTimeMillis());
2018-12-19T13: 37: 37.285Z
Он не всегда дает ту же строку, что и Instant.toString
, но дает строку, которую Instant
может проанализировать в другой системе.В то время как Instant.toString()
печатает только столько десятичных знаков, сколько необходимо, вышеприведенный SimpleDateFormat
будет печатать три десятичных знака также, когда некоторые из них 0
.
Когда часовой пояс форматировщика установлен в формате UTC, буква шаблона форматирования(верхний регистр) X
будет печатать Z
как «часовой пояс» (на самом деле просто смещение).
Ссылки