Freemarker 以毫秒为单位将时间戳转换为带有时区的日期

Posted

技术标签:

【中文标题】Freemarker 以毫秒为单位将时间戳转换为带有时区的日期【英文标题】:Freemarker convert timestamp in milliseconds to date with time zone 【发布时间】: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格式添加一个时区?

【问题讨论】:

【参考方案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 中添加的。

【讨论】:

谢谢您会检查并会回来

以上是关于Freemarker 以毫秒为单位将时间戳转换为带有时区的日期的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Mysql 时间戳转换为 sysdate(6) 格式(以毫秒为单位)?

将时间戳(以毫秒为单位)转换为 Java 中的字符串格式时间

Java:Unix时间以毫秒为单位

Razor 视图中的 Epoch/Unix 时间戳(以毫秒为单位)到日期时间

如何编写一个简单的java程序,可以在单个单元中转换一系列时间? (例如以毫秒为单位)[关闭]在线尝试!

使用 PHP 将时间戳以毫秒为单位插入 Postgres 表