如果您运行以下代码
<?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
答案 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');