PHP ofset timezone UNIX zaman damgası verilmiş olsun

5 Cevap php

Ben DST değilse bağlı olarak, 3600 veya 7200 ya belli bir zaman dilimi içinde (maalesef) bir veritabanından gelen bir Unix zaman damgası. Bu önce bir sorun olmamıştı, ama bizim web sitesi şu anda damgaları dedi bir daha uluslararası bir kitleye hareketli çünkü Javascript etkileşim, ben herhangi bir ofset olmadan damgası dönüştürmek gerekir.

Peki, ben, o, timestamp anda, timezone için ofset olsun, sadece bir Unix zaman damgası verilen yapacak? Ben PHP dokümanlar bakıyorum, ama ben biraz kayıp olduğum pek çok tarih / saat fonksiyonları var.

PHP 5.2.3 kullanıyorum

5 Cevap

Sen genel durumda bunu yapamam. Bir Unix zaman damgası Unix dönemi beri saniye sadece sayı ve herhangi bir zaman damgası bilgileri içermiyor.

Sizin için işe yarayabilecek bir şey belirli bir zaman damgası DST yürürlükte olduğu bir dönemde ortaya çıkıp çıkmadığını veya çalışma ve buna göre ayarlarlar. (Bitmeden her zaman damgası için 2 anlamlar DST hemen başlar ve hemen ardından saat vardır çünkü) bu yaklaşım olsa sınırları etrafında başarısız olur.

Gelecekte, muhtemelen tam sorun bu tür önlemek için, UTC damgaları saklamak daha iyidir.

Unix zaman damgası Eğer unix zaman (Epoch beri saniye) demek, ofset her zaman 0'dır. Epoch 00:00:00 UTC, 1 Ocak 1970 olarak tanımlanır. 0 mahsup etmiştir UTC unutmayın.

Diliminin uygulama ofset ve dst tarih / zaman yapıları içine unix zaman damgası dönüştürmek kütüphaneler tarafından işlenir. (Ben php bilmiyorum, ama yani C, localtime işlevi böylece iki ortamda veya / etc / localtime dosyadan timezone bilgileri uygular, bir unix zaman damgası alır ve saniye, dakika, saat yapı çıkarır ve .)

U kullanabilirsiniz:

$timezone_offset = date('O');

Bu saat Greenwich saatine (GMT) farkı dönecektir.

[source]

Bu hile yapmak istiyorsunuz?

$tz = date("O", $time);

Ayrıca yapabilirdi:

Burada:

http://www.php.net/manual/en/function.date.php