当我尝试格式化日期时,它会在我的树枝模板中呈现今天的日期,为什么会发生这种情况?

问题描述

我正在使用带有 wordpress 的 twig 模板,我试图输出一个日期,但是当我尝试格式化日期时,它的格式正确但它呈现的是今天的日期,而不是我试图呈现的日期。

{% for item in program_schedule %}
  {{ item.training_date_current }} // renders correctly 05/Aug/2021
  {{ post.published_at|date("d/M/Y") }} // renders 07/Jul/2021 - should be same as above
{% endfor %}

这很奇怪,知道为什么会发生这种情况以及如何解决吗? 谢谢。

解决方法

因为在循环中,您将单数帖子设置为 item,但在 published_at 处应用 post,它在 Timber 中可以从全局上下文中提供(基本上它是当前单数页面)。您可以安装 Debug Timber Bar,它会帮助您找到上下文中的内容或检查 {{ dump(_context) }}。将循环更改为

{% for item in program_schedule %}
  {{ item.training_date_current }}
  {{ item.published_at|date("d/M/Y") }}
{% endfor %}
,

在 php 中,date 方法有 2 个参数,其中 1 个是可选的,如 manual 中所述。字符串格式是必需的,第二个参数是时间戳。如果未提供时间戳,则它采用当前时间戳并为您提供今天的日期 (07/Aug/2021)。可能是您希望 post.published_at|date("d/M/Y") 将published_at 作为第二个参数传递,但事实并非如此。

您可能希望将日期方法调用为 date("d/M/Y",$dt),其中 $dt 是时间戳。创建时间戳的一种方法是使用 mktime(hour,minute,second,month,day,year)