问题描述
我正在使用带有 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)