Geçtiğimiz birkaç saat boyunca bu konu hakkında bir şeyler okudum ve sanırım bunun üzerinde bir saptamam var, ama biraz onay istiyorum.PHP'de farklı saat dilimlerindeki tarihleri depolamanın/görüntülemenin en iyi yolu nedir?
Durum MySQL saklanacaktır Yorum yazmak için muktedir Kaliforniya, diyelim ki, bir kullanıcı istiyorum. Daha sonra Texas'taki yorumu, kendi saat dilimine göre ayarlanan gönderim tarihi ile birlikte görüntüleyebilmeyi istiyorum. date_default_timezone_set('UTC');
$Date = new DateTime();
ile bir DateTime nesnesi almak için: Çözüm
- Çalıştır saklanması
uygulamanın başlangıcında aşağıdaki Önerilen
böylece tüm tarih fonksiyonları UTC saat dilimini kullanın UTC'de geçerli tarih ve saat.
- MySQL'de datetime türü sütununa eklenecek değeri almak için
$Date->format()
'u kullanın.- JavaScript, kullanıcının saat dilimi bilgileri alın ve çerez depolamak gösteriliyor
.
- Tarihsaat sütun değerini almak için bir MySQL SELECT sorgusu çalıştırın. Bir DateTime nesnesini saklanan UTC zamanı ile eşzamanlamak için
$Date = new DateTime($row['time']);
. UTC saatini kullanıcının saat dilimine göre ayarlamak için$Date->setTimezone(new DateTimeZone($userTimezone));
.$Date->format();
kullanılarak
Saat dilimi çerezini kullanıcı girişinde ayarlayacağımı düşünüyorum, bu yüzden Avustralya'ya gidip oradan giriş yaparsanız güncellemelidir. Bazı JavaScript'in sayfa yüklemesinde çalıştırıldığını mı söylüyorsunuz, örneğin, gibi süreleri arar ve hepsini anında dönüştürür? –
Kullanıcı saatine ulaşmanın tek yolu JS veya geo-ip ile. İkincisi karmaşık ve güvenilmezdir. Eğer JS'yi her durumda kullanacaksanız, o zaman girişte yapmak daha fazla ev tutmak (sunucu tarafı izleme) gerektirir. Bunu uçurumda yapmak daha mantıklı. – aleemb
Teşekkürler. Daha fazla araştırırken, sizinle aynı fikirde olmaya başladım. –