Как отформатировать ZonedDateTime для строки?
Я хочу преобразовать ZonedDateTime
в String
в формате ("dd/MM/yyyy - hh:mm")
. Я знаю, что это возможно в других типах Joda-Time, просто используя их toString("dd/MM/yyyy - hh:mm")
.... Но это не работает с ZonedDateTime.toString()
.
Как я могу форматировать ZonedDateTime
для String
?
РЕДАКТИРОВАТЬ:
Я попытался напечатать время в другом часовом поясе, и результат, похоже, всегда будет таким же:
ZonedDateTime date = ZonedDateTime.now();
ZoneId la = ZoneId.of("America/Los_Angeles");
ZonedDateTime date2 = date.of(date.toLocalDateTime(), la);
// 24/02/2017 - 04:53
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date));
// same result as the previous one
// 24/02/2017 - 04:53
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date2));
И я не в том же часовом поясе, что и Лос-Анджелес.
EDIT 2:
Определено, как изменить временные интервалы:
// Change this:
ZonedDateTime date2 = date.of(date.toLocalDateTime(), la); // incorrect!
// To this:
ZonedDateTime date2 = date.withZoneSameInstant(la);
Ответы
Ответ 1
Вы можете использовать java.time.format.DateTimeFormatter. https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
Вот пример.
ZonedDateTime date = ZonedDateTime.now();
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date));