Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Twig 为什么细枝中的日期对象落后1天?_Twig - Fatal编程技术网

Twig 为什么细枝中的日期对象落后1天?

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') %} {{

我在我的模板中使用这个。该职位发布日期为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') %}
{{ 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');