MessageFormatter 在 PHP < 5.5 中不适用于 DateTime 实例作为参数。实例将被转换为值为 0 的时间戳(例如 1970-01-01),并将引发以下通知:“无法将类 DateTime 的对象转换为 int”。您必须在这些旧版本的 PHP 中手动将实例转换为时间戳。
<?php
$datetime = new DateTime();
if (PHP_VERSION_ID < 50500) { // PHP < 5.5 需要转换为时间戳
MessageFormatter::formatMessage('en_US', 'Today is {0, date, full}.', array($datetime->getTimestamp()));
} else {
// 当前代码
MessageFormatter::formatMessage('en_US', 'Today is {0, date, full}.', array($datetime));
}
?>