Почему не поддерживается convertDateTime Instant - PullRequest
0 голосов
/ 08 марта 2020

Почему JSF convertDateTime не поддерживает Instant ? Он поддерживает все другие «новые» классы даты и времени , но не Instant. Который я хотел использовать для всех временных меток в моей платформе. Например, для создания и редактирования даты / времени сообщений на форуме. Все эти даты будут сохранены в UT C и отформатированы на внешнем интерфейсе в зависимости от часового пояса пользователя.

Я мог бы написать другой конвертер. Но сначала я хотел бы знать, если это не поддерживается по уважительной причине. Или следует использовать другой класс DateTime для описанной цели?

Я ожидал использовать что-то вроде:

<h:outputText value="#{post.creationTimestamp}">
  <f:convertDateTime type="Instant" timeZone="#{userBean.timeZone}" dateStyle="long" timeStyle="short"/>
</h:outputText>

Где post.creationTimestamp - это Мгновенный и userBean.timeZone является Часовой пояс . Но это не работает, потому что тип Instant не поддерживается. Одно из возможных решений:

<h:outputText value="#{post.creationTimestamp.atZone(userBean.timeZone.toZoneId())}">
  <f:convertDateTime type="localDateTime" dateStyle="long" timeStyle="short" />
</h:outputText>

Что кажется немного громоздким.

1 Ответ

1 голос
/ 08 марта 2020

В классе Instant нет метода format () (в отличие от LocalDateTime и ZonedDateTime). Поэтому было бы странно, если бы тег JSP мог его отформатировать.

Вы можете конвертировать объект Instant в ZonedDateTime с помощью atZone () , тогда вы сможете отформатировать его.

...