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 中的字符串格式时间
Razor 视图中的 Epoch/Unix 时间戳(以毫秒为单位)到日期时间