【问题标题】:Display freemarker formatted time with a time zone显示带有时区的 freemarker 格式化时间
【发布时间】:2019-09-12 13:57:37
【问题描述】:

我需要显示两个不同时区的时间。

以下工作,但芝加哥时间的格式很难看:

<p><b>Report performed (Belfast): </b> ${.now?string["EEEE, MMMM dd, yyyy, hh:mm a '('zzz')'"]}</p>
<p><b>Report performed (Chicago): </b> ${.now?iso('America/Chicago')}</p>

结果:

Report performed (UTC): Apr 23, 2019 12:08:27 PM
Report performed (Chicago): 2019-04-23T06:08:27-05:00

尝试连接会导致错误:

<p><b>Report performed (Chicago): </b> ${.now?iso('America/Chicago')?string["EEEE, MMMM dd, yyyy, hh:mm a '('zzz')'"]}</p>

12:30:18.307 [main] ERROR freemarker.runtime - Error executing FreeMarker template

freemarker.core.NonHashException: For "...[...]" left-hand operand: 需要一个哈希值,但这已经计算为一个字符串(包装器:f.t.SimpleScalar): ==> .now?iso('America/Chicago')?string [在模板“emailTemplate.ftl”第 80 行第 54 列]


FTL 堆栈跟踪(“~”表示嵌套相关):

- 失败于:${.now?iso("America/Chicago")?string[... [in template "emailTemplate.ftl" at 第 80 行,第 52 列]

at freemarker.core.DynamicKeyName.dealWithStringKey(DynamicKeyName.java:142) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.DynamicKeyName._eval(DynamicKeyName.java:75) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.Expression.eval(Expression.java:81) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:96) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.DollarVariable.accept(DollarVariable.java:59) ~[freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.Environment.visit(Environment.java:327) [freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.Environment.visit(Environment.java:333) [freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.core.Environment.process(Environment.java:306) [freemarker-2.3.25-incubating.jar:2.3.25]
at freemarker.template.Template.process(Template.java:386) [freemarker-2.3.25-incubating.jar:2.3.25]
at mycode...

【问题讨论】:

    标签: javascript date freemarker


    【解决方案1】:

    我相信您不能一口气完成,因为 .iso 或任何日期格式都会返回 string 。默认情况下,您可以在 ftl 中指定 time_zone 并执行 dateformat。

    <#setting time_zone="America/Chicago">
    <#assign aDateTime = .now>
    ${aDateTime?string["EEEE, MMMM dd, yyyy, hh:mm a '('zzz')'"]}
    

    它给出输出Tuesday, April 23, 2019, 07:35 AM (CDT)

    更多参考请看这个Document

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2013-04-22
      相关资源
      最近更新 更多