Twig中使用localizeddate过滤器的奇怪行为

时间:2018-05-18 07:22:42

标签: date filter twig

在Twig中,我有一个像这样的DateTime(来自dump):

DateTime {#22261 ▼
  +"date": "2017-01-01 08:00:00.000000"
  +"timezone_type": 1
  +"timezone": "+01:00"
}

当我使用不同的过滤器打印此日期时,我会得到不同的年度结果。

示例:

{{ testdate|date('d M Y') }} 

打印01 Jan 2017 =>年是正确的。

{{ testdate|localizeddate('none', 'none', "fr", "Europe/Paris", "d MMM YYYY") }}

打印1 janv. 2016 =>年份错误

{{ testdate|localizeddate('medium', 'none', "fr") }}

打印1 janv. 2017 =>年是正确的。

因此,当我使用localizeddate('none', 'none', "fr", "Europe/Paris", "d MMM YYYY")时,这一年似乎是错误的。

如果我将语言环境更改为" en",则年份现在正确(2017年)。但是如果我尝试其他语言环境,例如" de","它"," es"," pl"年总是" 2016"。

注意:如果我将null用于时区参数,则结果相同。

1 个答案:

答案 0 :(得分:1)

http://userguide.icu-project.org/formatparse/datetime

您必须使用'y'而不是'Y'。

使用'Y'表示星期几,但是'y'表示正确的年份。

有时,1月短暂的一周被认为是12月的一部分(第52周或第53周),反之亦然。