为什么日期对象在树枝中落后1天?

时间:2018-04-19 00:37:47

标签: twig

我在我的模板中使用它。这篇文章的日期是4/18/2018

树枝

{% 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

是否还有其他因素导致约会过时?

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

date过滤器返回DateTime对象这一事实是错误的,实际上date过滤器只返回一个格式化的字符串

{% set today = "now"|date("m/d/y", "America/Chicago") }}
{{ dump(today) }} {#  string(8) "04/19/18" #}

为了解决您的问题,您需要使用date

中的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 #}

小小的洞察力,为什么你的时间关闭

  1. 因为date过滤器会尝试并且最好转换有效datetime字符串中的任何字符串,因此意味着,因为{{1包含字符串today04/17/2018会将字符串转换为twig以创建有效的04/17/2018 00:00:00字符串

  2. 当省略时区时,datetime会回归到它的默认时区

  3. 为了省略我示例中的twig参数,您需要在false中设置默认时区。这可以通过

    来实现
    twig