Ben*_*anc 3 datetime freemarker
我在Freemarker中有一个对象,其日期为ISO8601格式(例如2012-02-01T13:01:02+0000),我将如何计算它与现在之间的天数差异?
在其他非Java场景中,我将其重新格式化为unix时间戳并进行数学运算(如distance_of_time_in_wordsRoR或Symfony中的函数),但据我所知,Freemarker无法将ISO8601时间戳转换为unix时间戳.
是的,我意识到模板层可能不适合做这种事情,但需要等等.
如果天数不同,则表示两个日期之间经过24小时的次数,那么这个表达式就是这样(你至少需要FreeMarker 2.3.17才能?long这样工作):
(
(
s2?datetime("yyyy-MM-dd'T'HH:mm:ssZ")?long
- s1?datetime("yyyy-MM-dd'T'HH:mm:ssZ")?long
) / (1000 * 60 * 60 * 24)
)?int
Run Code Online (Sandbox Code Playgroud)
一种更好的方法是在Java中实现该功能TemplateMethodModelEx.模板可以将其拉<#assign distanceInDays = 'com.example.DistanceInDaysMethod'?new()>入(将其放入常用的#include-d或#import-ed文件中),然后您可以将其用作distanceInDays(s1, s2).