Freemarker ISO 字符串到带时区的日期时间

问题描述

我需要以所需的格式显示下面的“字符串”

字符串 str = 1979-01-24T00:00:00.000-08:00
所需格式:Jan 24,1979 00:00:00 AM PST

注意:str 中的 tz 可以是任何不限于 PST 的 tz。
尝试了以下但没有奏效:

  • str?datetime.iso - 输出Jan 24,1979 2:00:00 AM CST - 这以我需要的格式显示日期时间,但时间正在从 PST 转换为 CST。

  • str?string("MMM dd,yyyy hh:mm:ss a zzz") - 错误:需要一个方法,但已计算为字符串

  • str?datetime?string("MMM dd,yyyy hh:mm:ss a zzz") - 错误:无法解析的日期:“1979-01-24T00:00:00.000-08:00”

  • <#setting datetime_format="iso"> str?datetime - 1979-01-24T02:00:00-06:00 - 时区已更改。

解决方法

时区可以通过以下设置进行配置,参考他们的文档https://freemarker.apache.org/docs/ref_directive_setting.html

<#setting time_zone ="PST">
<#assign str = "1979-01-24T00:00:00.000-08:00">
${str?datetime.iso}