我正在使用SendGrid门户来管理我的电子邮件模板,使用车把替换作为此链接中的参考https://sendgrid.com/docs/ui/sending-email/using-handlebars/#substitution
我想知道是否可以在SendGrid事务模板门户中转换和/或格式化日期。
这是我在SendGrid门户中的HTML模板:
<p>This report was generated on {{GenerationTimeUtc}}</p>
这是发送到SendGrid的动态数据:
{
"GenerationTimeUtc":"2018-09-14T21:16:30.1467851Z"
}
我希望以更可读的方式显示它,例如“此报告是在05年5月生成的”,而不是显示“此报告生成于2018-09-14T21:16:30.1467851Z”
我正在使用SendGrid V3
提前致谢。
来自SendGrid支持:
我们无法转换给定字段的时间,如果您想要一个Substitution值,例如Date转换,那么这需要在替换之前完成。
您需要创建一个自定义手柄帮助程序,它将处理您的日期以按您希望的方式显示它。我会在这里给你一个例子(如果你想要完全相同的代码,我会使用moment library你必须包含它):
Handlebars.registerHelper('dateFormat', function(item, dateOnly, format, options) {
if (item == null || item == undefined || item == NaN) {
return "-";
} else {
var date = isNaN(item)?new Date(item):parseInt(item);
if (dateOnly == 'dateonly') {
return moment(date).format('DD/MM/YYYY');
} else if (dateOnly == 'timeonly') {
return moment(date).format('HH:mm:ss');
} else if (dateOnly == 'format' && options != undefined && format != undefined) {
return moment(date).format(format);
} else {
return moment(date).format('DD/MM/YYYY HH:mm:ss');
}
}
});
并在您的代码中调用此代码:
{{dateFormat GenerationTimeUtc 'format' 'MM/YYYY'}}