为什么转换日期时间不支持即时



为什么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>

这看起来有点麻烦。

Instant类没有format((方法(与LocalDateTime和ZonedDateTime相反(。因此,如果JSP标记能够格式化它,那就很奇怪了

您可以使用atZone((将Instant对象转换为ZonedDateTime,然后就可以对其进行格式化

相关内容

  • 没有找到相关文章

最新更新