IntlDateFormatter返回错误的年份

时间:2019-11-30 10:10:01

标签: php date intldateformatter

如果您运行以下代码

<?php

$date = new DateTime('2019-12-30 19:45:00', new DateTimeZone('Europe/London'));
$formatter = new IntlDateFormatter(
    'en_GB',
    null,
    null,
    'Europe/London',
    IntlDateFormatter::GREGORIAN,
    'MMMM YYYY'
);

echo $formatter->format($date);

它将回显December 2020。这是该类的错误,还是我做错了,因为我希望它返回December 2019

2 个答案:

答案 0 :(得分:2)

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

Y代表“年度周”的年份(无论什么意思),而y是我们习惯的常规年份参考。因此,要获得当前年份,请用YYYY替换yyyy,它应该可以完成工作

答案 1 :(得分:1)

您正在错误地使用此功能。我了解,想法是要以本地特定的方式设置日期和时间的格式。

像英国人一样写日期和时间:

  

格林威治标准时间2019年12月30日(星期一)19:45:00

在美国,特朗普先生会说:

  

2019年12月30日,星期一,格林威治标准时间下午7:45:00

对于德国,我会说:

  

蒙塔格(Montag),30。Dezember 2019 um 19:45:00 Mittlere Greenwich-Zeit

托瓦尔德·莱纳斯(Torwald Linus)会在芬兰说:

  

måndag2019年12月30日19:45:00 Greenwichtid

最后在洪都拉斯佩德罗·德·阿尔瓦拉多会说:

  

lunes 30 de diciembre de 2019,19:45:00 hora del meridiano de Greenwich

(我喜欢这个功能:))

因为如果您想要类似 2019-12-30 的结果,则可能会使用格式

$date = new DateTime('2019-12-30 19:45:00', new DateTimeZone('Europe/London'));

echo $date->format('Y-m-d');