Datetime 如何使用Freemarker计算两个ISO8601日期之间的天数差?
我有一个Freemarker中的对象,它的日期是ISO8601格式的(例如,Datetime 如何使用Freemarker计算两个ISO8601日期之间的天数差?,datetime,freemarker,Datetime,Freemarker,我有一个Freemarker中的对象,它的日期是ISO8601格式的(例如,2012-02-01T13:01:02+0000),我如何计算它与现在之间的天数差异 在其他非Java场景中,我将其重新格式化为unix时间戳并进行计算(如RoR或Symfony中的distance\u of_time\u In_words函数),但就我所见,Freemarker无法将ISO8601时间戳转换为unix时间戳 是的,我意识到模板层可能不是做这类事情的合适地方,但必须等等。如果天数的差异是指两个日期之间经过
2012-02-01T13:01:02+0000
),我如何计算它与现在之间的天数差异
在其他非Java场景中,我将其重新格式化为unix时间戳并进行计算(如RoR或Symfony中的distance\u of_time\u In_words
函数),但就我所见,Freemarker无法将ISO8601时间戳转换为unix时间戳
是的,我意识到模板层可能不是做这类事情的合适地方,但必须等等。如果天数的差异是指两个日期之间经过了多少次24小时,那么这个表达式就是这样的(对于
?long
,至少需要FreeMarker 2.3.17才能这样工作):
更好的方法是在Java中通过实现TemplateMethodModelEx
来实现该函数。模板可以使用
(将其放入一个通常的\include
-d或\import
-ed文件),然后您可以将其用作距离天数(s1,s2)
内置的?new()
做什么?我在FM文档中看不到它
(
(
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