Ответ 1
TL;DR
Instant.now()
.toString()
2018-01-23T01: 23: 45.678901Z
Подробнее
Другие ответы используют старые устаревшие классы.
ISO 8601
Ваш желаемый формат соответствует стандарту ISO 8601.
Z
на конце означает Zulu
, что означает UTC.
java.time
В Java 8 и более поздних версиях используйте встроенную инфраструктуру java.time.
В классах java.time по умолчанию используются форматы ISO 8601 при разборе/генерации текстовых представлений значений даты и времени.
Instant
An Instant
- это момент на временной линии в формате UTC. Метод now
получает текущий момент. Что касается Java 8 Update 74, то метод now
получает текущий момент с millisecond, но будущие версии могут полностью соответствовать nanosecond разрешение, которое может поместиться в Instant
.
Метод Instant::toString
генерирует строку так, как вы хотите, используя группы цифр (0, 3, 6 или 9) по мере необходимости для дробной секунды.
String output = Instant.now().toString(); // Example: 2016-02-14T15:50:39.123Z
Сократить дробную секунду
Если вам не нужна доля секунды, как показано в примере с вашими примерами, обрезайте с вызовом with
, передавая ChronoField.NANO_OF_SECOND
enum.
String output = Instant.now().with( ChronoField.NANO_OF_SECOND , 0 ).toString(); // Example: 2016-02-14T15:50:39Z (no '.123' at end)
Еще проще, вызовите метод truncatedTo
, передав ChronoUnit.SECONDS
enum.
String output = Instant.now().truncatedTo( ChronoUnit.SECONDS ).toString();
Если вы хотите усечь на целую минуту, а не на целую секунду, см. этот другой вопрос.