2013-02-26 25 views
8

Như tiêu đề nói, ai cũng có thể giải thích tại sao mãphp - date_default_timezone_set không hoạt động nhưng ini_set 'date.timezone' thực hiện. Tại sao?

ini_set('date.timezone', 'Europe/Athens'); 

công trình nhưng

date_default_timezone_set('Europe/Athens'); 

không?

Tôi đang tìm kiếm giải pháp để chuyển đổi dấu thời gian và tất cả những gì tôi có thể tìm thấy trên web là sử dụng date_default_timezone_set. Nhưng chuyển đổi luôn có sự khác biệt 1 giờ.

Sau đó, tôi tìm thấy chủ đề "strftime() function showing incorrect time" đang sử dụng mã init_set (và sau đó tôi đã RTM và phát hiện ra rằng nó đã được đề cập trong tài liệu). Tôi đã thử và nó đã hoạt động.

Nhưng tôi chưa tìm thấy câu trả lời vì sao date_default_timezone_set không hoạt động.

Ai đó có thể giải thích được không?

+0

là dấu thời gian không phải là UTC và Athens sẽ là +1? có thể thử Châu Âu/Dublin – KevInSol

+0

Vui lòng chia sẻ mã đầy đủ .. – Evert

+0

Mã hoạt động http://pastebin.com/EQx9jeGm –

Trả lời

2

Bạn phải đang sử dụng phiên bản PHP cũ.

date_default_timezone_set is for PHP 5.1.2 and above. 

Hãy thử php -v và kiểm tra phiên bản PHP của bạn.

0

Bạn có thể sử dụng:

putenv("TZ=Europe/Berlin"); // PHP 4 
+0

Bạn có thể định dạng mã của mình bằng nút ** '{}' ** trong trình chỉnh sửa. – kdbanman

0

localhost

server

Nó khá muộn, tôi đã cùng một vấn đề và tôi thấy có sự khác biệt, tôi gửi ảnh chụp màn hình từ localhost của tôi và phpinfo máy chủ cá nhân của tôi cho múi giờ.

Trên máy chủ cục bộ của tôi, date_default_timezone_set ('[múi giờ]') hoạt động chính xác, tuy nhiên, trên máy chủ, nó luôn trả về UTC. Dựa trên tài liệu php, có vẻ như múi giờ không được đặt trong php ini của máy chủ của tôi, vì vậy tôi có thể bỏ qua bộ múi giờ vì không có giá trị nào được xác định trước đó.

Sử dụng init_set, nó làm cho múi giờ khả dụng. Tôi nghĩ rằng múi giờ không được xác định trước trên php ini là nguyên nhân.

Các vấn đề liên quan