Метод, который вы попробовали, должен работать. Я думаю, что ваша проблема в том, что вы перезаписываете $date
- который изначально содержит DateTool
- вашей рабочей переменной. Когда значение конфигурации Velocity Tools org.apache.velocity.tools.userCanOverwriteTools
равно true
(это значение по умолчанию), Velocity позволит вам перезаписать $date
, но после этого DateTool
будет недоступен.
Поэтому попробуйте изменить рабочую переменную на $cal
например. Затем у вас есть несколько методов:
#set($cal = $date.calendar)
$cal.add(2, 1)
$cal.set(5, 1)
$cal.add(5, -1)
$date.format('yyyy-MM-dd', $cal)
или
#set($cal = $date.calendar)
$cal.set(5, $cal.getActualMaximum(5))
$date.format('yyyy-MM-dd', $cal)
Во всех случаях вы прибегаете к использованию констант Calendar.MONTH
и Calendar.DATE
(соответственно 2 и 5). Возможно, вы захотите поместить такие служебные операции в собственный инструмент Java, чтобы иметь более удобочитаемые шаблоны.