2013-04-03 22 views
9

1 January 1970 geçmiş saniye olsun strtotime kullanıyor muyum, ama Anlamıyorum şu saat 12.00AM ayarlı ve ben saat 1 AM olarak ayarlandığında 0 olsun, böylece 1 HOUR da neyin nesi varsa neden -3600 alıyorum? Saat dilimi ile ilgili bir sorun mu var?Neden strtotime (1 Ocak 1970) PHP'de 0 yerine -3600 döndürür?

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 benim PHP dosyasında herhangi zaman dilimini ayarlamak ettik ya ben bile benim .ini dosyası (Taze Yüklü XAMPP)

Güncelleme değiştirilmez ettik: Zaman Dilimi : Avrupa/Berlin

+0

ama rofl sizin base64 Off-Topic comment @asprin e – asprin

+1

kodlanmış @ sanırım ayarlamak için eklemek Bunu bir iltifat olarak kabul ediyorum –

+1

Evet, bir çeşit iltifattı, kutunun dışında güzel ve mizahi. – asprin

cevap

8

En nedeni büyük olasılıkla yerel time zone için. bu makinede

var_dump(date_default_timezone_get()); 

çıktısı nedir
?
Ayrıca mktime ve gmmktime Sen saat dilimi ayarlarınızı kontrol etmeniz gerekir

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

Saat diliminin işleri karıştırdığından emindim .... Teşekkürler –

+0

+1 mktime() ve gmmktime() ... :) –

6

Saat diliminiz UTC + 1 olarak ayarlanmalıdır. Saat diliminizdeki gece yarısı, UTC'de gece yarısından bir saat önce gerçekleşti. Bu, -3600 saniyenin çıkışını açıklıyor.

Sen beklenen sonucu elde etmek UTC üzere saat dilimini ayarlayabilirsiniz:

date_default_timezone_set('UTC'); 
+0

Teşekkür ederim, saat dilimini UTC'ye sıfırlamak için şimdi kullanıyorum –

4

arasındaki farkı kontrol edebilirsiniz. veya default_time_zone değerini UTC olarak ayarlarsanız, istediğiniz sonucu alırsınız. hehe neyse teşekkür ederim); s:

date_default_timezone_set('UTC'); 
1

bu zaman dilimini 'Avrupa/Berlin'

date_default_timezone_set('Europe/Berlin'); 
Konu dışı
İlgili konular