DateTimeZone错误:时区未知或错误

时间:2011-01-31 06:46:08

标签: php

我正在尝试运行此脚本:

<?php
$d = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
$time = $d->format('H:i');

echo $time;
?>

但是我收到了这个错误:

Fatal error: Uncaught exception 'Exception' with message 'DateTimeZone::__construct() [<a href='function.DateTimeZone---construct'>function.DateTimeZone---construct</a>]: Unknown or bad timezone (Asia/Kolkata)

虽然它适用于Asia/Dacca例如。可能是什么问题以及如何解决它?

4 个答案:

答案 0 :(得分:3)

欢迎来到StackOverflow!如果您还没有花时间阅读常见问题解答。

我尝试了你的例子,它适用于PHP 5.3.1和“Olson”时区数据库版本 2009.18

您应该执行phpinfo()并查看您拥有的时区数据库版本,如果它更旧,请更新它。您可以在this list中看到最新版本2011.1有亚洲/加尔各答。

答案 1 :(得分:1)

试试这个很有趣。

$timezones = array('Europe/London', 'Mars/Phobos', 'Asia/Kolkata');

foreach ($timezones as $tz) {
    try {
        $mars = new DateTimeZone($tz);
    } catch(Exception $e) {
        echo $e->getMessage() . '<br />';
    }
}

答案 2 :(得分:0)

PHP时区数据库已在5.3版中更新。尝试安装并重试

答案 3 :(得分:0)

尝试在CHROOT监狱中运行网络服务器时,我遇到了同样的问题。在这种情况下,chrooted dir不能包含Linux时区文件。如果是您的情况并且您可以访问网络服务器文件,只需将所有文件复制到chroot jail:

对于CentOS它

cp -R /usr/share/zoneinfo/ /MY_CHROOT_DIR/usr/share/