我需要以所需的格式显示下面的“字符串”
字符串str = 1979-01-24T00:00:00.000-08:00
所需格式:Jan 24, 1979 00:00:00 AM PST
注意: str中的tz可以是任何tz,而不限于PST。
试过以下几种方法,但都没有效果:
str?datetime.iso -输出为Jan 24, 1979 2:00:00 AM CST -它以我需要的格式显示日期时间,但时间正在从PST转换为CST.。
str?string("MMM dd, yyyy hh:mm:ss a zzz") - Error:期望一个方法,但这已经计算为字符串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 -时区被更改。发布于 2021-01-13 09:48:33
这里的问题是,FreeMarker将日期/时间值解析为java.util.Date (及其子类),后者不再存储时区,因为它总是将值存储在UTC中。这样在解析之后信息就丢失了。从2.3.30开始,我看到用Java (使用Java8 ZonedDateTime)来实现这一点的唯一解决方案。
发布于 2021-01-13 04:51:33
可以通过以下设置配置时区,请参阅它们的文档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}https://stackoverflow.com/questions/65695440
复制相似问题