在 freemaker 中执行日期时间加/减小时/分钟

问题描述 投票:0回答:3

我是 freemarker 新手。

在freemarker中,我想对DateTime执行算术表达式如下:

${triggerTimestamp}-1h

但这不起作用。有人可以帮忙吗?

freemarker
3个回答
0
投票

FreeMarker 不执行开箱即用的日期/时间算术(至少从 2.3.30 开始)。数据模型(上下文)预计包含您实际想要显示的值。不过,我们可以在 Java 中实现一些辅助方法。


0
投票

您将想要探索将日期转换为 unix/纪元时间。如果将

?long
添加到变量的末尾,您会将日期时间转换为纪元时间(以秒为单位),然后进行数学运算并将其转换回日期。你的例子是

${(triggerTimestamp?long - 1 * 1000 * 60 * 60)?number_to_datetime?string.iso}

0
投票

由于没有任何内置函数,您可以创建一些函数来添加/删除日期等。

这是一个减去天数的函数:

<#function subtractDays date days>
    <#assign timeInMilliseconds = (1000 * 60 * 60 * 24 * days) >
    <#assign aDate = date?long - timeInMilliseconds?long>
    <#return aDate?number_to_date>
</#function>

用途:

<#assign currentDate = .now>
<#assign oneDayBefore = subtractDays(currentDate, 1) >
© www.soinside.com 2019 - 2024. All rights reserved.