首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Freemarker ISO字符串到时区的日期时间

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

Stack Overflow用户
提问于 2021-01-13 03:52:18
回答 2查看 716关注 0票数 0

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

字符串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 -时区被更改。
EN

回答 2

Stack Overflow用户

发布于 2021-01-13 09:48:33

这里的问题是,FreeMarker将日期/时间值解析为java.util.Date (及其子类),后者不再存储时区,因为它总是将值存储在UTC中。这样在解析之后信息就丢失了。从2.3.30开始,我看到用Java (使用Java8 ZonedDateTime)来实现这一点的唯一解决方案。

票数 1
EN

Stack Overflow用户

发布于 2021-01-13 04:51:33

可以通过以下设置配置时区,请参阅它们的文档https://freemarker.apache.org/docs/ref_directive_setting.html

代码语言:javascript
运行
复制
<#setting time_zone ="PST">
<#assign str = "1979-01-24T00:00:00.000-08:00">
${str?datetime.iso}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65695440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档