【问题标题】:Freemarker convert timestamp in milliseconds to date with time zoneFreemarker 以毫秒为单位将时间戳转换为带有时区的日期
【发布时间】:2021-09-29 21:23:42
【问题描述】:

我可以使用以下格式将毫秒转换为日期:

${createdTime?number_to_datetime?string("yyyy-MM-dd HH:mm:ss")}

输出为:2021-07-22 11:02:38

现在我想给它添加一个时区Asia/Colombo,有什么方法可以给freemarker number_to_datetime格式添加一个时区?

【问题讨论】:

    标签: freemarker datetime-format


    【解决方案1】:

    从 2.3.31 开始,您不能直接将时区传递给 ?string。 (你可以到?iso(timeZone),和它的朋友,但那些输出只用ISO格式。)

    但是,您可以使用<#setting time_zone='Asia/Colombo'> 更改时区。之后,所有内容都将在该时区格式化(我的意思是在同一顶级模板执行期间)。不过,这可能是不需要的,你想把它改回原来的样子。在这种情况下,想法是这样的:

    <#macro withTimeZone tz>
      <#local lastTZ = .time_zone>
      <#setting time_zone = tz>
      <#nested>
      <#setting time_zone = lastTZ>
    </#macro>
    

    所以现在你可以这样做了:

    <@withTimeZone "Asia/Colombo">${.now?string('yyyy-MM-dd HH:mm:ss')}</@>
    

    当然,你也可以用这个包围更大的模板部分。

    请注意,.time_zone 是在 FreeMarker 2.3.31 中添加的。

    【讨论】:

    • 谢谢您会检查并会回来
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2016-04-25
    • 2019-03-03
    • 1970-01-01
    • 2022-11-27
    • 2020-06-24
    • 2015-06-17
    相关资源
    最近更新 更多