Freemarker中的日期差异

Posted

技术标签:

【中文标题】Freemarker中的日期差异【英文标题】:Date Difference in Freemarker 【发布时间】:2021-06-15 17:34:36 【问题描述】:

我需要 freemarker 中两个日期之间的差异。一个日期来自系统,而另一个日期必须硬编码为 18/02/2021。

任何人都可以指导我如何做到这一点,因为我面临解析问题。

到目前为止我的代码:

 <#assign difference=(record.trandate?long / 86400000)?round - (hardcodedDate?long / 86400000)?round />

record.trandate 是系统的日期,而hardcodedDate 是我输入的日期。

我尝试在下面分配两者,但没有工作:

        <#assign hardcodedDate = "Feb 18, 2021 2:07:30 PM" />
        <#assign hardcodedDate = "Mar 18, 2021 2:07:30 PM" />

最后,所需要的只是两个日期之间的差异。

【问题讨论】:

【参考方案1】:

hardcodedDate被声明为字符串,你必须将其转换为日期,使用date内置。

例如:

<#assign date1 = "Feb 18, 2021 12:07:30 PM"?date("MMMM d, yyyy h:mm:ss a") />
<#assign date2 = "Mar 18, 2021 2:07:30 PM"?date("MMMM d, yyyy h:mm:ss a") />
<#assign difference=(date1?long / 86400000)?round - (date2?long / 86400000)?round />

【讨论】:

应该是?datetime。由于您仅将结果用于?long,因此在这种情况下并不重要,但在其他用例中可能会造成混淆,因为如果您打印该值,时间部分将不会显示。 完美运行!非常感谢@obourgain

以上是关于Freemarker中的日期差异的主要内容,如果未能解决你的问题,请参考以下文章

freemarker模板中的日期格式问题

FreeMarker 当前日期比较

显示日期 - 长格式的三天减去 Freemarker 中的年份

Freemarker/Velocity - 日期操作

更改表单中的spring jsp日期输入绑定以使用freemarker

freemarker数据类型