PHP IntlDateFormatter->format() 返回 false

标签 php date datetime internationalization intl

这段代码在我的开发服务器上运行完美,但是当我在另一台服务器上运行它时,它失败了:

$formatter = new IntlDateFormatter('en-GB', IntlDateFormatter::LONG, IntlDateFormatter::NONE, 'Europe/London');
var_dump($formatter->format(new DateTime('2012-06-01')));
var_dump($formatter->getErrorMessage() . ' ' . $formatter->getErrorCode());

给我:

bool(false) 
string(14) "U_ZERO_ERROR 0" 

有人知道为什么吗?特别奇怪的是它甚至不报告错误(U_ZERO_ERROR 是默认值)。谢谢。

编辑:

为了比较,我在本地得到:

string(11) "1 June 2012" 
string(14) "U_ZERO_ERROR 0" 

我在其他语言环境中也遇到了同样的问题,包括 en-US

最佳答案

好的,明白了。只有 PHP 5.3.4+ 允许将 DateTime 对象传递给格式。在旧版本上你需要做的:

$date = new DateTime('2012-06-01');
$formatter->format($date->getTimestamp());

关于PHP IntlDateFormatter->format() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600859/

相关文章:

python - Pandas :dt.dayofweek 显示不正确的值

date - JIRA JQL 按日期搜索 - 有没有办法获取 Today()(日期)而不是 Now()(日期时间)

php - DB2如何使用PDO指定连接字符集

javascript - 我可以将变化的变量保存到sql中吗?

PHP - 从 URL 下载文件

javascript - 添加时刻语言环境打破初始日期

search - ubuntu:查找在特定日期更改的所有文件

MySQL - 更改日期时间的函数

php - 无法使用 MySQL 中的 CONVERT_TZ 函数将 GMT 时区转换为 PDT

php - 项目未导入到 CRUD 数据库应用程序,并且无法检索值