Freemarker / Velocity – 日期操作

关于这两个模板引擎,我有一个相当简单的问题。
我正在努力创造一个未来/过去的日期,从现在开始的固定时间,例如18个月前或明天。

我知道可以使用velocity / freemarker模板中的java日期对象(类似于$date.add(2,-18) )来执行此操作,但我想使用DateTool或freemarker core来执行此操作 。

这是我认为纯粹的表现forms(只是在你在飞行预订表格中看到的默认日期),所以我看不出为什么模板引擎不能做到这一点。

虽然可以吗? 如果是这样,怎么样?

在Velocity Tools中没有这样的方法。

我知道这篇post真的很旧,但是对于未来的人们仍然在寻找答案:日期操作可以将日期转换为/毫秒:

 ${(mydate?long - 18 * 86400000)?number_to_date?string("yyyy-MM-dd")} 

例如,从mydate减去18天。 (注意86400000是每天的毫秒数)

对于freemarker,也许: 内置日期 。

您也可以在Velocity中执行此操作,但不能使用DateTool(无论如何都属于Velocity Extras)。

拥有一个“格式”对象是一个很好的做法,该对象具有各种实用程序,仅用于表示目的(您可以看到使用Velocity的各种框架如何使用“格式”对象)。

因此,您的代码看起来像$ format.dateFromNow(),并且仍然会有一个表示方法。

您可以编写自己的方法在FreeMarker中使用: http : //freemarker.sourceforge.net/docs/pgui_datamodel_method.html

构建一个执行此逻辑的DataAddMethod。