Datetime 如何使用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时间戳 是的,我意识到模板层可能不是做这类事情的合适地方,但必须等等。如果天数的差异是指两个日期之间经过

我有一个Freemarker中的对象,它的日期是ISO8601格式的(例如,
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