网络套件!使用 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_field1
和date_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_field1
和transaction.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"]
我得到与上面问题中提到的相同的错误。
那么你需要检查内容<#if transaction.date_field2?has_content>$transaction.date_field2</#if>
以上是关于网络套件!使用 freemarker 从日期 DD/MM/YYYY 获取月份名称不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 freemarker 语言中将当前日期格式(YYYY-MM-DD HH:MM:SS)转换为(YYMMDD)格式