Найти конец текущего месяца с Velocity - PullRequest
1 голос
/ 09 января 2020

Я только начал использовать почтовые скрипты Marketo, и мне нужно выяснить последний месяц текущего месяца.

Я могу найти текущую дату, как показано ниже. Как я могу сделать дальше?

#set($date = $date.calendar)
#set($current_date = $date.format('yyyy-mm-dd', $date.getTime()))
$current_date

См. Здесь, Вычтите месяцы из даты в скорости Я пытался вычесть 1 день из начала следующего месяца, но это не работает.

Знание количество дней в этом месяце также соответствует требованию.

1 Ответ

0 голосов
/ 09 января 2020

Метод, который вы попробовали, должен работать. Я думаю, что ваша проблема в том, что вы перезаписываете $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, чтобы иметь более удобочитаемые шаблоны.

...