为什么JSF的convertDateTime不支持Instant?它支持所有其他"新"的日期和时间类,但不支持Instant。我想将其用于我的平台中的所有时间戳。例如,用于创建和编辑论坛帖子的日期/时间。这些日期将全部存储在UTC中,并根据用户时区在前端进行格式化。
我可以写另一个转换器。但首先我想知道,如果它没有得到充分的支持。还是应该将另一个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>
这看起来有点麻烦。
您可以使用atZone((将Instant对象转换为ZonedDateTime,然后就可以对其进行格式化