2013-04-03 40 views
9

Đang sử dụng strtotime để có được giây đã qua Đại 1 January 1970, nhưng tôi không hiểu tại sao mà đang nhận được -3600 nếu đồng hồ được thiết lập để 12.00AM và tôi nhận được 0 khi đồng hồ được thiết lập để 1 AM, vì vậy những gì với 1 HOUR đó? Đây có phải là vấn đề với múi giờ không?Tại sao strtotime (ngày 1 tháng 1 năm 1970) trả về -3600 thay vì 0 trong PHP?

echo 'I Expect 0 Here '.strtotime('1st January 1970').'<br />'; 
//This gives me -3600 

echo 'I Expect 3600 Here '.strtotime('1st January 1970 01.00AM'); 
//This gives me 0 

PS Tôi đã không đặt bất kỳ Time Zone trong file PHP của tôi hay tôi đã thậm chí không sửa đổi tập tin của tôi .ini (tươi cài đặt XAMPP)

Cập nhật: Time-Zone : Châu Âu/Berlin

+0

Tắt chủ đề, nhưng rofl @ base64 của bạn được mã hóa email – asprin

+1

@asprin bình luận Off-Topic Tôi đoán: p;) hehe cảm ơn bạn anyways , Tôi coi đó là một lời khen –

+1

Vâng, đó là một lời khen, tốt đẹp trong suy nghĩ của hộp và hài hước nữa. – asprin

Trả lời

8

Nó rất có thể là do địa phương time zone của bạn.
Đầu ra của

var_dump(date_default_timezone_get()); 

trên máy đó?
Bạn cũng có thể kiểm tra sự khác biệt giữa mktime và gmmktime

echo " mktime: ", mktime(), "\n"; 
echo " gmmktime: ", gmmktime(), "\n"; 
+0

Tôi chắc chắn múi giờ đã gây rối mọi thứ .... Cảm ơn –

+0

+1 cho mktime() và gmmktime() ... :) –

6

Múi giờ của bạn phải được đặt thành UTC + 1. Nửa đêm trong múi giờ của bạn đã xảy ra một giờ trước nửa đêm ở UTC, điều này giải thích mức chênh lệch -3600 giây.

Bạn có thể đặt múi giờ UTC để có được kết quả mong đợi:

date_default_timezone_set('UTC'); 
+0

Cảm ơn bạn, đang sử dụng tính năng này ngay bây giờ để đặt lại múi giờ thành UTC –

4

Bạn cần phải kiểm tra các thiết lập múi giờ của bạn. hoặc nếu bạn đặt default_time_zone thành UTC, bạn sẽ nhận được kết quả mong muốn.

date_default_timezone_set('UTC'); 
1

thêm này để thiết lập múi giờ 'Châu Âu/Berlin'

date_default_timezone_set('Europe/Berlin'); 
Các vấn đề liên quan