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', '今天是 {0, date, full}。', array($datetime->getTimestamp()));
} else {
// 当前代码
MessageFormatter::formatMessage('en_US', '今天是 {0, date, full}。', array($datetime));
}
?>