2012-06-24 13 views
5

El CMS que estoy usando me permite acceder a la compensación de tiempo del usuario a partir de la hora UTC/GMT. Entonces, si el usuario ha configurado su zona horaria en EST, este desplazamiento será "-5".¿Cómo verificar si una compensación de tiempo está en horario de verano?

Lo que estoy haciendo en este momento cuando necesito para mostrar la hora actual es algo así como:

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

Esto funciona, excepto cuando el horario de verano está en el afecto para el usuario, entonces es una hora detrás.

Entonces, mi pregunta es, ¿cómo puedo determinar si un desplazamiento de tiempo dado (como "-5") necesita tener una hora agregada a él?

Respuesta

6

No puede derivar esto del desplazamiento solo porque el desplazamiento se aplica a toda la latitud y los países que no tienen un horario de verano uniforme vigente. Por ejemplo, in Australia, Daylight Saving Time is not observed in Queensland, the Northern Territory or Western Australia, pero en todos lados. Tendría que llamar al geolocate your users y luego verificar con PHP's DateTimeZone API si hay horario de verano en ese país.

Véase también How to automatically detect user's timezone?

+1

* (relacionado) * Lectura interesante: http://derickrethans.nl/storing-date-time-in-database.html – NikiC

2

Si todo lo que tiene es "-5", entonces usted no tiene suficiente información para tomar esa determinación. Sería preferible si pudiera acordar el acceso al nombre de la zona horaria en la que se encuentra el usuario (como "América/Nueva_York").

Cuestiones relacionadas