GMT'ye dayalı PHP Echo Dilimi ofset

1 Cevap php

2009-12-16 15:27:47: Ben böyle bir MySQL db GMT saati verilerini depolayan bir uygulama var.

Offset Kullanıcının timezone bu gibi başka bir sütunda depolanan: -6

Yukarıda timezone GMT-6, CST olmasıdır. Ofset verileri GMT gelen - (date ('T') yani) Ben CST echo herhangi bir yolu var mı?

Not: Ben de uygulama küresel dilimi kullanarak ayarlanmış olduğunu eklemek gerekir: date_default_timezone_set ('GMT');

1 Cevap

Ne yazık ki, her zaman ofset her saatinde tek bir saat dilimi yoktur. Birçok GMT uzaklıklar birden dilimleri var. Ayrıca, GMT DST (varsa) sırasında değişim kaydırır. Örneğin, DST sırasında, ABD / Arizona ve ABD / Dağ aynı GMT ofset paylaşıyoruz; Ancak, yılın kalan döneminde, US/Mountain ve US/Arizona aynı GMT paylaşmayın ofset. PHP desteklenen dilimleri listesi için DateTimeZone::listIdentifiers() or check out the manual kullanabilir ya.

Eğer sıfırdan bir uygulama başlangıç ​​olsaydı, ben ofset yerine GMT saat dilimi belirleyicinin saklanması öneririm, ama ben uygulama üretimde zaten tahmin ediyorum. Bu durumda, gerçekten verilerin iyileştirilmesi olmadan dilimini görüntülemek için güvenilir bir yol yok.

Ben size tabloya bir timezone sütun eklemenizi öneririm. Sen ofset GMT'ye dayalı varsayılan bazı önceden tanımlanmış listesine timezone set olacak bir kerelik bir senaryo yazabilirim. Ofset GMT 8 Örneğin, timezone America/Los_Angeles ayarlanır. Son olarak, görüntülemek için uygulamayı değiştirmek / timezone tanımlayıcı yerine GMT uzaklıklar kaydedin. Bu, kullanıcıların bir alt kümesi için sorunlara neden olabilir, ama onlar için gerekirse onların dilimini değiştirmek için izin verir.