首页 > 解决方案 > 使用 Velocity 查找当前月末

问题描述

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

我可以在下面找到当前日期。我该怎么做?

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

请参阅此处, 从速度的日期减去几个月 我试图从下个月的开始减去 1 天,但它不起作用。

知道这个月的天数也符合要求。

标签: calendarvelocitymarketo

解决方案


您尝试的方法应该有效。我认为你的问题是你正在用你的工作变量覆盖$date- 它最初包含- 。DateTool当 Velocity Toolsorg.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.MONTHandCalendar.DATE常量(分别为 2 和 5)。您可能希望将此类实用程序操作放入您自己的 Java 工具中,以获得更易读的模板。


推荐阅读