PHP IntlDateFormatter-> format()返回false

时间:2012-09-26 11:37:55

标签: 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

1 个答案:

答案 0 :(得分:3)

好的,明白了。只有PHP 5.3.4+允许将DateTime对象传递给格式。在旧版本上,您需要执行以下操作:

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