Nasıl PHP veya javascript kullanarak kullanıcı olarak aynı zaman diliminde datetime gösteriyor?

2 Cevap php

Şimdi böyle göstermek için datetime var varsayalım:

2010-05-29 15:32:35

Gelen zaman dilimi, date_default_timezone_get ile elde edilebilir

nasıl çıktı sonuç aynı saat diliminde kullanıcının tarayıcısı olarak kullanıcılar karıştı alamadım böylece?

2 Cevap

PHP veya JavaScript, kullanıcının yerel saat dilimi ayarlarını okumak için güvenilir bir yolu yoktur.

JavaScript okuyabilir UTC ve kullanıcının geçerli zaman diliminde zaman arasında ofset, ama bu sana bir zaman diliminin adını vermez, bu yüzden (kez tamamen belirsiz hale getirmek) veya bunu içeren dilimi tanımlayıcı dışı bırakarak ya kalacaksın bir açık bir çirkin olan, UTC+01:00 gibi ofset ve hala farklı DST dönemlerde timezones değişen dikkat etmez.

Bobah diyor, sen müşterinin gerçek masaüstü saat diliminde çıktı o bir JavaScript Date üzerine toLocaleString() kullanabilirsiniz. Ancak, bu şekilde tüm tarih biçimlendirme üzerinde hiçbir kontrolü olsun. Benim makinede Örneğin Chrome hantal çıktılar:

Sat May 29 2010 15:03:46 GMT+0200 (W. Europe Daylight Time)

Opera sadece yukarı öksürükler ise:

29/05/2010 15:03:46

Hangi, hiç timezone değil devlet gibi, tüfekli belirsiz. IE benzer veciz olup, Safari ya hiç zaman dilimini belirtir. Firefox ancak Windows, Linux benim için yapar. Ahh.

Eğer güvenilirlik gerekirse Yani timezones işlemek için tek yolu kullanıcının el onlar için bir sayfa üreten olduğunuzda o timezone UTC dönüştürmek, sonra kendi site ayarlarında birini seçmek izin vermektir. Bu olabilir bazı ortak zaman dilimleri büyük olasılıkla (this question stratejileri için bakınız) hangi olarak JavaScript bir tahmin yapabilir, ama sen doğru olacak garanti edemez.

Sen sayfaya UTC damgaları geçmek ve JavaScript ile çevirebiliriz. Bir keresinde bu numara kullanılmaktadır ve sonuç ile mutlu oldu. UTC zaman damgası alarak constructor JavaScript tarihi vardır. UTC damgası nesil için PHP birini kullanabilir gmmktime().