我有这个简单的代码,以前可以正常工作:
<?php
$dateFormatted = \MessageFormatter::formatMessage(
'en_US', "{0, date, d MMMM YYYY}", [new \DateTime()]
);
var_dump($dateFormatted); // 28 December 2019
但是从2019年12月29日开始,它将显示明年的日期:
var_dump($dateFormatted); // 29 December 2020
而且这种情况每年都会发生,直到2050年为止。据我所知,这种情况只发生在去年12月,但是我不确定。2018年不受影响。为什么会发生这种情况,并且有任何解决方法?
PHP 7.1版本
Upd:看起来strftime
有同样的问题
Upd2:strftime
显示正确的年份,%Y
但不显示%G
不幸的MessageFormatter
是,关于date
格式的文档未作解释。但我找到了解决方法。您可以使用更低的y
。尝试:
$dateFormatted = \MessageFormatter::formatMessage(
'en_US', "{0, date, d MMMM y}", [new \DateTime()]
);
echo $dateFormatted; // 30 December 2019
并且供strftime
您使用strftime("%d %B %Y")
。我认为这个问题来自ISO_8601
格式标准
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句