在SendGrid模板门户中格式化日期

问题描述 投票:0回答:2

我正在使用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

提前致谢。

handlebars.js sendgrid
2个回答
0
投票

来自SendGrid支持:

我们无法转换给定字段的时间,如果您想要一个Substitution值,例如Date转换,那么这需要在替换之前完成。


0
投票

您需要创建一个自定义手柄帮助程序,它将处理您的日期以按您希望的方式显示它。我会在这里给你一个例子(如果你想要完全相同的代码,我会使用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'}}
© www.soinside.com 2019 - 2024. All rights reserved.