2011-01-31 39 views
10

我試圖運行此腳本:DateTimeZone錯誤:未知的或壞的時區

<?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例如。可能是什麼問題以及如何解決它?

+3

`的print_r(DateTimeZone :: listIdentifiers());`它返回`亞洲/加爾各答'? – ajreal 2011-01-31 07:12:44

回答

3

歡迎來到StackOverflow!如果您還沒有時間閱讀常見問題解答。

我試過你的例子,它適用於PHP 5.3.1和「Olson」時區數據庫版本2009.18

你應該做一個phpinfo(),看看你有什麼時區的數據庫版本,如果它的舊版本更新它。您可以在this list中看到最新版本2011.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 />'; 
    } 
} 
0

PHP時區數據庫已在版本5.3中更新。嘗試安裝並重試

0

當我嘗試在CHROOT監獄中運行網絡服務器時,我遇到了同樣的問題。在這種情況下,chroot dir不能包含Linux時區文件。如果這是你的情況,你可以訪問的網絡服務器文件簡單的複製所有文件到chroot監牢:

爲CentOS是

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