Kullanımı PHP 5.2.5 Biraz DateTime nesneler ile çalışan ve kapalı görünüyordu zaman fark edildi. Ben yaşıyorum sorun dilimleri ile ilgili olabilir, ama emin değilim - ben nasıl çıktı buna bağlı bir Unix Zaman Damgası bir DateTime oluşturma ve farklı / beklenmeyen sonuçlar alıyorum.
Ben kolayca "sorunu" göstermek için aşağıdaki yarattı:
$timezone = new DateTimeZone('America/Chicago');
$now = time();
$now_datetime = new DateTime('@' . $now, $timezone);
echo phpversion() . "\n\n";
echo $now . "\n";
echo $now_datetime->format('U') . "\n\n";
echo date('g:i:sa', $now) . "\n";
echo $now_datetime->format('g:i:sa') . "\n\n";
Bu aşağıdaki çıktılar:
5.2.5
1287676530
1287676530
10:55:30am
3:55:30pm
Ben doğru zaman dilimi içinde şu anda yaşıyorum, ve date() fonksiyonu çıkışına biçimlendirilmiş bir tarih, hem de 'Amerika / Chicago' varsayılan zaman dilimi olmanın kullanırken sunucu "doğru" zamanı (10:00) gösteriyor o makinede. DateTime::format() aracılığıyla değerleri çıktısı Ama, ne zaman, zamanları çok farklı.
Ben sadece doğru zaman damgası tutan doğrulamak için ->format('U') eklendi.
Yani, doing something wrong muhtemelen değilim veya ben the wrong expectations var. Bu yüzden what am I missing?
Bu DateTime ile bir saat dilimi sorunu gibi görünüyor, ama bu durum sanki ... yanlış, neden Amerika / Chicago "şimdi" gösteriyor?