Twig 为什么细枝中的日期对象落后1天?
我在我的模板中使用这个。该职位发布日期为2018年4月18日 小树枝Twig 为什么细枝中的日期对象落后1天?,twig,Twig,我在我的模板中使用这个。该职位发布日期为2018年4月18日 小树枝 {% set today = "now"|date("m/d/Y") %} {{ today }} // 04/17/2018 我也尝试过明确设置时区 {% set today = "now"|date("m/d/y", "America/Chicago") }} {{ today }} // 04/17/2018 如果我想得到时间: {% set currentHour = today|date('H') %} {{
{% set today = "now"|date("m/d/Y") %}
{{ today }} // 04/17/2018
我也尝试过明确设置时区
{% set today = "now"|date("m/d/y", "America/Chicago") }}
{{ today }} // 04/17/2018
如果我想得到时间:
{% set currentHour = today|date('H') %}
{{ currentHour }} // 00
是否还有其他原因导致日期如此遥远
谢谢你的建议 关于
date
过滤器返回DateTime
对象这一事实,您错了,事实上date
过滤器只返回格式化字符串
{% set today = "now"|date("m/d/y", "America/Chicago") }}
{{ dump(today) }} {# string(8) "04/19/18" #}
为了解决您的问题,您需要使用twig
{% set today = date("NOW", "America/Chicago") %}
{{ dump(today) }}{# object(DateTime)#919 (3) { ["date"]=> string(19) "2018-04-19 00:32:04" ["timezone_type"]=> int(3) ["timezone"]=> string(15) "America/Chicago" } #}
{{ today | date('H', false) }} {# false = ignore default set timezone #}{# 07 #}
小洞察为什么你的时间如此遥远
date
过滤器将尽力转换有效datetime
字符串中的任何字符串,因此这意味着,因为today
包含字符串04/17/2018
,该twig
将字符串转换为2018年4月17日00:00:00
,以创建有效的datetime
字符串twig
将返回到其默认时区为了在我的示例中省略
false
参数,您需要在twig
中设置默认时区。这可以通过以下方式实现:
$twig->getExtension('Twig_Extension_Core')->setTimezone('Europe/Paris');