网络套件!使用 freemarker 从日期 DD/MM/YYYY 获取月份名称不起作用

Posted

技术标签:

【中文标题】网络套件!使用 freemarker 从日期 DD/MM/YYYY 获取月份名称不起作用【英文标题】:Netsuite! using freemarker to get the name of the month from a date DD/MM/YYYY doesn't work 【发布时间】:2020-11-24 07:24:17 【问题描述】:

问题

我正在处理一个电子邮件模板文本,我想将日期 DD/MM/YYYY 更改为 MMMM。模板中有两个它的实例。这两个实例属于 2 个不同的日期字段,但是它们的配置是相同的。假设我有date_field1date_field2。当我在date_field1 中执行以下操作时,它可以正常工作,但在date_field2 中却没有,我收到以下错误。

我检查了 mydate 的类型,以确保它是 date。当我只是做?string 时,它工作正常并且它确实包含一个日期值,但是使用.MMMM,它会引发一个错误。任何帮助或建议都会很棒。

代码

Working: <#assign mydate1=transaction.date_field1 /> $mydate1?string.MMMM?lower_case

Not working: <#assign mydate2=transaction.date_field2 /> $mydate2?string.MMMM

错误

【问题讨论】:

你能用transaction.date_field1transaction.date_field2的例子来编辑你的问题吗? @JackFleeting 很抱歉回复晚了,但我刚刚编辑了它。 【参考方案1】:

如果你有一个实际的日期字段,格式字符串是这样的:

<#assign mydate=transaction.date_field2?date["MMMM"]>

当然,没有名为 date_field2 的字段,所以我认为标签是一个简化的示例。

注意你也可以试试:

<#assign mydate=transaction.date_field2?string["MMMM"]>

但我认为这是针对比 Netsuite 支持的更新版本的 Freemarker。

最后,您可以将整个字符串设置为日期格式,该格式将从代码中的位置一直到您重置它的位置。我发现我必须为日期和日期时间设置它,因为 Freemarker 将某些“日期”字段解释为日期时间,即使它们不应该是:

<#setting date_format="MMMM">
<#setting datetime_format="MMMM">
$transaction.date_field2

【讨论】:

with ?date["MMMM"] 我得到 字符串与预期的日期/时间/日期时间格式不匹配。解析的字符串是:“”。那么显然转换时的值是空的?并使用?string["MMMM"] 我得到与上面问题中提到的相同的错误。 那么你需要检查内容&lt;#if transaction.date_field2?has_content&gt;$transaction.date_field2&lt;/#if&gt;

以上是关于网络套件!使用 freemarker 从日期 DD/MM/YYYY 获取月份名称不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 freemarker 语言中将当前日期格式(YYYY-MM-DD HH:MM:SS)转换为(YYMMDD)格式

在 Netsuite Advanced PDF 模板中使用 Freemarker 语法进行日期翻译

Freemarker:将日期从科学记数法转换为数字

Freemarker/Velocity - 日期操作

FreeMarker 当前日期比较

如何强制输入日期格式为 dd/mm/yyyy? [复制]