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。