使用 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.MONTH
和 Calendar.DATE
常量(分别为 2 和 5)。您可能希望将此类实用程序操作放入您自己的 Java 工具中,以获得更具可读性的模板。
我刚开始使用 Marketo 的邮件脚本, 我需要找出当月的最后一天。
我可以找到当前日期 below.How 我可以进一步做吗?
#set($date = $date.calendar)
#set($current_date = $date.format('yyyy-mm-dd', $date.getTime()))
$current_date
参考这里,
知道这个月有多少天也符合要求
您试过的方法应该可以。我认为你的问题是你正在用你的工作变量覆盖 $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 工具中,以获得更具可读性的模板。