2012-06-24 30 views
5

Il CMS in uso consente di accedere allo sfasamento temporale dell'utente in base all'ora UTC/GMT. Quindi, se l'utente ha impostato il fuso orario su EST, questo offset sarà "-5".Come verificare se un offset orario è in ora legale?

Quello che sto facendo in questo momento, quando ho bisogno di visualizzare l'ora corrente è qualcosa di simile:

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

Questo funziona, tranne quando l'ora legale è in effetto per l'utente, allora è un'ora dietro.

Quindi, la mia domanda è: come posso determinare se un dato offset di tempo (come "-5") deve essere aggiunto un'ora?

risposta

6

Non è possibile derivare questo dall'offset perché l'offset si applica a tutta la latitudine e i paesi su cui non è in vigore l'ora legale uniforme. Ad esempio in Australia, Daylight Saving Time is not observed in Queensland, the Northern Territory or Western Australia ma ovunque altro. Dovresti chiamare geolocate your users e quindi verificare con PHP's DateTimeZone API se c'è il DST in quel paese.

vedere anche How to automatically detect user's timezone?

+1

* (correlato) * Lettura interessante: http://derickrethans.nl/storing-date-time-in-database.html – NikiC

2

Se hai a disposizione solo "-5", quindi non si dispone di informazioni sufficienti per fare che la determinazione. Sarebbe preferibile se fosse possibile disporre di accedere al nome del fuso orario in cui si trova l'utente (ad esempio "America/New_York").

Problemi correlati