2011-01-31 38 views
10

Tôi cố gắng để chạy kịch bản này:DateTimeZone lỗi: Unknown hay xấu múi giờ

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

echo $time; 
?> 

nhưng tôi đã nhận lỗi này:

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

Mặc dù nó hoạt động tốt cho Asia/Dacca ví dụ. Điều gì có thể là vấn đề và cách khắc phục?

+3

'print_r (DateTimeZone :: listIdentifiers()); 'hiện nó trở lại' châu Á/Kolkata'? – ajreal

Trả lời

3

Và chào mừng bạn đến với StackOverflow! Nếu bạn chưa có thời gian để đọc Câu hỏi thường gặp.

Tôi đã thử ví dụ của bạn và nó đã hoạt động với tôi bằng PHP 5.3.1 và "Cơ sở dữ liệu múi giờ" Olson "2009.18.

Bạn nên thực hiện phpinfo() và xem phiên bản DB múi giờ nào bạn có và nếu phiên bản cũ hơn cập nhật phiên bản đó. Bạn có thể xem trong số this list rằng phiên bản mới nhất, 2011.1, có châu Á/Kolkata.

1

Hãy thử tính năng này để giải trí.

$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

Cơ sở dữ liệu múi giờ PHP đã được cập nhật trong phiên bản 5.3. Hãy thử cài đặt và thử lại

0

Tôi gặp sự cố tương tự khi thử chạy máy chủ web trong CHROOT. Trong trường hợp này, thư mục chroot không thể chứa các tệp múi giờ Linux. Nếu đó là trường hợp của bạn và bạn có thể truy cập vào máy chủ web tập tin bản sao đơn giản tất cả các file để chroot tù:

Đối với CentOS nó

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