2012-06-24 14 views
5

Das CMS, das ich verwende, erlaubt mir, auf den Zeitversatz des Benutzers von UTC/GMT Zeit zuzugreifen. Wenn der Benutzer also seine Zeitzone auf EST gesetzt hat, ist dieser Offset "-5".Wie überprüft man, ob ein Zeitversatz in der Sommerzeit ist?

Was ich jetzt tun, wenn ich brauche, um die aktuelle Zeit anzuzeigen ist so etwas wie:

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

Dies funktioniert, außer, wenn die Sommerzeit in für den Benutzer beeinflussen, so ist es eine Stunde später.

Also meine Frage ist, wie kann ich feststellen, ob eine bestimmte Zeitverschiebung (wie "-5") eine Stunde hinzugefügt werden muss?

Antwort

6

Sie können dies nicht allein aus dem Offset ableiten, da der Offset für den gesamten Breitengrad gilt und Länder, auf denen keine einheitliche DST in Kraft ist. Zum Beispiel in Australia, Daylight Saving Time is not observed in Queensland, the Northern Territory or Western Australia aber überall sonst. Sie müssten geolocate your users und dann mit PHP's DateTimeZone API überprüfen, ob es DST in diesem Land gibt.

Siehe auch How to automatically detect user's timezone?

+1

* (verwandt) * Interessante lesen: http://derickrethans.nl/storing-date-time-in-database.html – NikiC

2

Wenn alles, was Sie haben, ist „-5“, dann haben Sie nicht genügend Informationen, um diese Entscheidung zu treffen. Es wäre besser, wenn Sie den Zugriff auf den Namen der Zeitzone haben könnten, in der sich der Benutzer befindet (z. B. "America/New_York").

Verwandte Themen