如何修复MessageFormatter返回格式错误的日期?

雅库波夫

我有这个简单的代码,以前可以正常工作:

<?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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何修复来自DB格式化日期的错误

如何修复错误的格式时间?

如何处理Userstatus返回错误的日期格式

.weekday 返回错误日期的最简洁修复

转换日期格式返回错误的日期 xcode

如何修复有关在 Java 中格式化日期的错误?

如何修复格式错误的数据框

如何修复熊猫列中的错误格式?

如何修复程序中的格式错误

如何修复错误“未设置开始日期”?

如何修复elasticsearch返回“2014-01”的日期“2014-12-31”格式为“yyyy-ww”

如何修复 didSelectRowAt 返回的错误 indexPath?

如何修复非法返回语句错误?

如何修复.index()方法返回错误的值?

如何修复Oracle中SQL中的“ ORA-01801:日期格式对于内部缓冲区而言太长”错误

使用 lubridate 解析具有 mm/dd/yyyy 0:00:00 格式的日期时如何修复错误

如何以土耳其语格式返回日期?

如何修复在我的 GET URL 中更改的日期格式

如何使用python3修复日期格式

如何修复 ORA-01821:无法识别日期格式

如何修复奇数日期(命令行命令)格式

Rails如何修复格式错误的请求(错误代码400)?

如何在python中修复返回结果的显示格式

Java-如何使用Regex修复格式错误的JSON?

如何使用HTML Agility Pack修复格式错误的HTML?

如何修复 HTTP 响应头的格式错误的值?

如何修复Raspberry Pi 4上的exec格式错误

如何修复格式错误的Banshee数据库?

打开ACC ATG时如何修复格式错误的帮助URL?