damgası doğru olmasına rağmen tarih () yanlış gün iade!

4 Cevap php

Php tarih fonksiyonu ile bir bizzare sorun var.

kodu:

$numDays = 8;
$date = strtotime('2010-11-06');
for ($i=1; $i<=$numDays; $i++)
{
    $thisDay = date("D, d M Y", $date);
    print ($thisDay.'<br>');
    $date+=86400; // add one day to timestamp
}

Benim sunucu (yerel konak, camlar) sonuç:

Sat, 6 Kasım 2010

Sun, 7 Kasım 2010

Mon, 8 Kasım 2010

Tue, 09 Nov 2010

Wed, 10 Nov 2010

Thu, 11 Kasım 2010

Fri, 12 Nov 2010

Sat, 13 Kasım 2010

Benim web sunucusunda Sonuç (linux)

Sat, 6 Kasım 2010

*Sun, 7 Kasım 2010

Sun, 7 Kasım 2010*

Mon, 8 Kasım 2010

Tue, 09 Nov 2010

Wed, 10 Nov 2010

Thu, 11 Kasım 2010

Fri, 12 Nov 2010

Notice how Sun, 7 Kasım 2010 appears twice on the remote server?? Why is this happening? can anyone explain this Behavior?

4 Cevap

7 Kasım 2010 (eğer yer gibi görünüyor ama değil Yunanistan) DST anahtarı birçok zaman dilimleri içinde tarihtir. Dan Wikipedia:

2007 yılından itibaren, Amerika Birleşik Devletleri ve Kanada çoğu Kasım ilk Pazar günü, yılın neredeyse üçte ikisine Mart ikinci Pazar DST inceleyin.

Yunanistan, bu gibi görünüyor October 31. Hangi zaman dilimi size makinede ayarlı var mı?

Yaz saati?

Başlangıç ​​tarihi 1 saat ve daha sonra-1saat ile kod çalıştırmak ve ne olsun sonuçları görmek. Daha fazla ipucu alırsınız ve büyük olasılıkla Yaz Saati ile yapmaktır.

Ayrıca, Pekka tarafından işaret olarak, 31 Ekim için tarih seti ile aynı deneyin ve neler olacağını görün.

İyi bir soru.

Bu UTC saat hesaplamaları yapmak ve sonra PHPs datetime fonksiyonlarını kullanarak kullanıcının konumu için gerekli timezone onları dönüştürmek için iyi bir uygulama:

date_default_timezone_set('UTC');
$timezone = new DateTimeZone('Europe/Athens');
$datetime = new DateTime('now', $timezone);
echo $datetime->format('Y-m-d H:i:s');