ТЛ; Др
Современный способ получить текущее время в UTC:
String output = Instant.now().toString(); // In UTC, standard format.
или зональные:
String output = ZonedDateTime.now(ZoneId.of("America/Montreal")).toString();
java.time
Другие ответы правильны, но использование java.util.Date
устарела в настоящее время классами java.time встроенные в Java 8 и более поздних версий.
Класс Instant
представляет собой момент на временной шкале в UTC с разрешением до наносекунд.
Instant instant = Instant.now();
Стандартный формат, используемый ISO 8601toString
может быть все, что вам нужно. Z
на конце короткое для Zulu
и означает UTC.
String output = Instant.now().toString(); // 2011-12-03T10:15:30.728Z
Как правило, лучше всего выполнять бизнес-логику и обмен данными в UTC. Но если вы ожидаете от своего пользователя или приемника данных, вы можете применить часовой пояс (ZoneId
), чтобы получить объект ZonedDateTime
. Укажите proper time zone name, а не 3-4 аббревиатуры, такие как EST
или IST
видны в прессе.
ZoneId zoneId = ZoneId.of("America/Montreal");
ZonedDateTime zdt = ZonedDateTime.ofInstant(instant , zoneID);
String output = zdt.toString(); // 2011-12-03T05:15:30.728-05:00[America/Montreal]
Вы можете пропустить Instant
объект в качестве ярлыка.
ZonedDateTime zdt = ZonedDateTime.now(zoneId);
Бросьте все это вместе для однострочной линии.
String output = ZonedDateTime.now(ZoneId.of("America/Montreal")).toString();
Для других форматов, поиск переполнения стека для DateTimeFormatter
.
Похоже, вы создаете 'output' и даже не используете его, прежде чем закрывать его? Что за вопрос? – Krease