我正在尝试运行此脚本:
<?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
例如。可能是什么问题以及如何解决它?
答案 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/