Jinja-电子邮件模板,带有变量的日期时间格式

时间:2020-11-05 07:22:32

标签: python email jinja2

这让我发疯,感觉应该会更容易。

在拖放式编辑器中将Jinja代码用于HTML电子邮件-这样就无法访问<head>

我有一个已设置为变量的日期,日期格式为YYYY-MM-DD HH:MM:SS

我想使用datetimeformat函数更改格式,它可以像{{ today()|datetimeformat("%y-%m-%d") }}一样正常工作-但是如果我可以与变量交换today(),我会感到困惑。

{% set bonusBeforeDate = linkedData.accessCodes[userAttribute['ReferralSource']]['promotion']['rules']['member_joined_date']['before'] %}

然后

{{ bonusBeforeDate|datetimeformat("%y-%m-%d") }}

1 个答案:

答案 0 :(得分:0)

好的,有人帮助我解决了这个问题,所以我在这里分享它,希望以后可以避免其他人的头痛。

它不起作用的原因是因为datetimeformat需要datetime对象,而your是字符串。 today()函数返回datetime对象,因此它可以直接工作。您将必须执行一些转换才能使此工作正常。需要遵循以下顺序:

  1. 将您的字符串转换为另一个合适的字符串,以表示日期时间对象。并非所有的日期查找字符串都可以转换为datetime对象,它们需要遵循特定的格式。

  2. 现在将新字符串转换为日期时间对象(strtotime)

  3. 将任何日期时间格式应用于日期时间对象(datetimeformat)

以您的示例为例:

第1步:

{% set myDate='2020-12-31 12:59:00' %}
{% set myDateFormatted = myDate|split(' ',2) %}
{% set myDateFinalFormat = myDateFormatted[0]+'T'+myDateFormatted[1]+'Z' %}

此时myDateFinalFormat的值应为2020-12-31T12:59:00Z,这是我们感兴趣的确切字符串格式。

第2步和第3步:

{{ myDateFinalFormat|strtotime("yyyy-MM-dd'T'HH:mm:ssXXX")|datetimeformat("%y-%m-%d") }}

这将输出:20-12-31