2012-06-24 11 views
5

CMS, którego używam, pozwala mi uzyskać dostęp do przesunięcia czasu użytkownika od czasu UTC/GMT. Jeśli więc użytkownik ustawił strefę czasową na EST, to przesunięcie będzie wynosić "-5".Jak sprawdzić, czy przesunięcie czasowe dotyczy czasu letniego?

Co robię teraz, kiedy trzeba wyświetlić aktualny czas jest coś takiego:

date('M j Y h:i A', time() + $offset*3600) 

To działa, wyjątkiem kiedy czas letni jest wpłynąć na użytkownika, to jest godzinę później.

Moje pytanie brzmi: w jaki sposób mogę ustalić, czy dane przesunięcie czasowe (np. "-5") wymaga dodania godziny?

Odpowiedz

6

Nie możesz tego wyprowadzić z samego offsetu, ponieważ przesunięcie dotyczy całej szerokości geograficznej, a kraje, w których obowiązuje, nie mają jednolitego czasu letniego. Na przykład in Australia, Daylight Saving Time is not observed in Queensland, the Northern Territory or Western Australia, ale wszędzie indziej. Trzeba by geolocate your users, a następnie sprawdzić, czy w tym kraju jest DST z numerem PHP's DateTimeZone API.

zobaczyć również How to automatically detect user's timezone?

+1

* (powiązane) * Interesujące przeczytanie: http://derickrethans.nl/storing-date-time-in-database.html – NikiC

2

Jeśli wszystko masz to „-5”, wtedy nie masz wystarczająco dużo informacji, aby to określenie. Byłoby lepiej, gdybyś mógł uzyskać dostęp do nazwy strefy czasowej, w której znajduje się użytkownik (np. "America/New_York").

Powiązane problemy