如何使用 Freemarker 将 CRM“仅日期”字段格式化为字符串?

Posted

技术标签:

【中文标题】如何使用 Freemarker 将 CRM“仅日期”字段格式化为字符串?【英文标题】:How to format CRM "Date Only" field to string with Freemarker? 【发布时间】:2017-09-05 13:44:07 【问题描述】:

我正在尝试使用 CRM 2013 中的 Freemarker/Clickdimensions 插件构建电子邮件模板。我在实体上有一个“仅限日期”字段,例如包含日期 2017-04-17。我希望此日期显示如下:4 月 17 日星期一。

这是使用 Freemarker 完成的,我尝试了以下方法:

<#assign x  = Recipient.field_booking.field_scheduleddate?time>
$x?string.full

这似乎不起作用。我根本没有得到任何结果,只是一个空行。 有谁知道可能出了什么问题?

【问题讨论】:

【参考方案1】:

我假设field_scheduleddate 是一个字符串(不是java.util.Date)。

?time FreeMarker 应该抛出和异常说类似字符串不符合预期模式的内容。我怀疑您使用的框架会捕获并抑制该异常(这使得使用 FreeMarker 变得更加困难)。检查日志,也许它就在那里。

您想在那里处理仅日期值,因此您应该使用?date,因为?time 用于仅时间值。此外,field_scheduleddate 显然使用 ISO 8601 格式,因此除非将 date_format 配置设置设置为 ISO,否则您将不得不使用 ?date.iso(自 FreeMarker 2.3.21 起支持)。

在打印日期时,?string.full 应该可以工作,但通常你应该将date_format 全局设置为你喜欢的格式,然后你可以简单地写$x

(还要注意,上面不需要#assign,因为你可以在$中放入任意复杂的表达式。)

【讨论】:

以上是关于如何使用 Freemarker 将 CRM“仅日期”字段格式化为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 freemarker 将字符串转换为数字?

如何使用 Freemarker 和 Apache FOP 将项目列表呈现为 4 个块?

Freemarker:如何使用枚举作为键遍历 Map

如何使用 java 将 spring 标记库公开给 Freemaker 配置并处理 Freemarker 模板类?

如何在 Maven 中使用模板代码生成器(例如 freemarker)?

Freemarker / Netsuite - 将变量分配给特定的项目数量