使用 Velocity 查找当月月底

Find the end of current month with Velocity

我刚开始使用 Marketo 的邮件脚本, 我需要找出当月的最后一天。

我可以找到当前日期 below.How 我可以进一步做吗?

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

参考这里, 我试着从下个月的月初开始减去1天,但是没有用。

知道这个月有多少天也符合要求

您试过的方法应该可以。我认为你的问题是你正在用你的工作变量覆盖 $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.MONTHCalendar.DATE 常量(分别为 2 和 5)。您可能希望将此类实用程序操作放入您自己的 Java 工具中,以获得更具可读性的模板。