Farklı sunucular farklı tarihler gibi unix damgalarını çevirmek gerekir?

3 Cevap php

Bir müşteri için bir UI güncellemesi üzerinde çalışıyor iken, ben tüm makaleler ile ilişkili tarihleri ​​bir gün dışarı edildi fark ettim. Benim değişiklikleri sırasında bir şey berbat ediyorum düşündüm, ama emin olmak için, birlikte bana bazı garip sonuçlar veren küçük bir php test dosyası attı. Test dosyası sadece budur;

<?php
$date = 1246053600;
echo 'unix: ',$date,', converted: ',date('d/m/Y', $date);
?>

Benim localhost Yukarıdaki kodu çalıştırırsanız alıyorum:

unix: 1246053600, converted: 26/06/2009

Ben üretim sunucusunda çalıştırmak eğer Ama olsun:

unix: 1246053600, converted: 27/06/2009

Ikisi arasındaki gün farkı fark ettiniz mi? Ne oluyor burada?! Elbette bir tarih için Unix zaman damgası dönüştürme herhangi bir sunucuya özel dependancies yok?

3 Cevap

Sizin sunucular, iki farklı saat dilimine ayarlanmış olabilir ve onlar gece yarısı 1 Ocak 1970 yılından bu yana saniye sayısı olarak damgası yorumluyorsun GMT. Tarihleri ​​bütün gün kapalı olabilir, ama bu gece yarısı sınırını geçmeye yapmak için yeterli bir günün sadece bir parçası, değil.

Sorun, sağlıyorsanız $ tarih değeri UTC olduğu tahmin olmasıdır. Eğer use gmdate, you will get the same result hem de sunucularda. Aksi takdirde, görüntülenen tarih ve saat sunucularının zaman dilimine göre ayarlanır. Sen O (sermaye oh) açık her sunucuda geçerli ayarını yapmak için timezone yazdırmak için kod kullanabilirsiniz:

echo 'unix: ',$date,', converted: ',date('d/m/Y O', $date);

Ben daha önce benzer bir sorun vardı. Benim geliştirme makineden php.ini içinde zaman dilimi üretim sunucudan farklı olduğunu gördük.

Ben bu incelemeye değer olduğunu söyleyebilirim.