2016-04-09 19 views
0

Öncelikle, PHP tamsayı için tarih dönüştürmek istiyorum.PHP Tarihi geçmedi maç

echo strtotime('08-04-2016 10:33:45 GMT+7'); 

ve bu sonuç var: . Ama koduyla tekrar kontrol ederken:

$timezone = +7; 
echo gmdate("H:i:s | d-m-Y ",1460086425 + 3600*($timezone+date("I"))); 

ve bu sonuç var: 11:33:45 | 08-04-2016

Neden bir saat boyunca, 11:33:45 | 08-04-2016 ve 08-04-2016 10:33:45 farklıdır.

+0

Değişim gmdate yankılanmaya ("h: i: s | d-m-Y", + 3600 1460086425 * ($ zaman dilimi + tarihi ("I"))); –

+0

$ felipsmartins, yardımlarınız için teşekkürler, ama hala "11:33:45 | 08-04-2016". Sapma bir saattir. –

cevap

0

Saat dilimi ayarlarınızın doğru olup olmadığını merak ediyorum. Son zamanlarda benzer bir sorun yaşadım ve Yaz Saati Uygulaması'nın doğru şekilde uygulanmaması neden oldu. Sunucu, nerede olduğunu bilmiyorsa, DST'nin ne zaman başladığını ve bittiğini bilemez. ne alabilirim -

bu sizin için geçerli olup olmadığını dışında, bir komut echo ini_get('date.timezone'); denemek bulmak için mi? Sorununuz bir web komut dosyasında veya konsolunuzda sorun varsa konsolda bir web bağlamında bunu yaptığınızdan emin olun. Bunun nedeni, PHP'nin bunu kontrol etmesi için ayarların genellikle ayrı ayrı yapılmasıdır.

Ayarınızın normalde, sonra TZ için belirleyeceğiniz php.ini dosyada değiştirmek istiyorum doğru şehri vermediğini bulursanız. (timezones kontrol ederken)

date.timezone = Europe/London 
0

Bildiğim kadarıyla GMT + 7 de alanlar DST kurallarına yoktur: Örneğin, benim için, bunu kullanmaktan. Ayrıca, date, saat diliminizi date.timezone'da ayarlayarak konumunuz için doğru olabilir, ancak muhtemelen başka bir konum için yanlıştır.

O DateTime kullanmak ve doğru DateTimeZone belirtmek daha iyidir. Böylece, zaman dilimi ofsetinin (ve DST'nin aktif olup olmadığı) yanlış olma şansı önemli ölçüde azalır.