sql >> Base de Datos >  >> RDS >> Mysql

Almacenamiento de valores de fecha/hora específicos para usuarios en diferentes zonas horarias

Ya que estás hablando de la programación de futuro tiempo, almacenando solo UTC no es necesariamente el mejor enfoque.

Tenga en cuenta que las reglas de zona horaria pueden (y lo hacen) cambiar. Si aplica una actualización a sus datos de zona horaria (en PHP, se hace con timezonedb de PECL paquete), entonces cualquier dato que ya haya convertido a UTC podría no ser válido.

La mejor solución es almacenar múltiples valores:

  • La fecha y hora local original

  • La zona horaria original (por ejemplo, "America/New_York" )

  • La fecha y hora UTC, convertidas a partir de los valores locales

Cuando desee ver si es el momento de ejecutar la tarea, compare la fecha y la hora UTC actuales con el valor UTC almacenado.

Cuando aplica actualizaciones de zona horaria, descarta los valores UTC convertidos anteriores para todas las entradas futuras y vuelve a calcular los nuevos en función de los datos actualizados.

Si no hace esto, entonces está perdiendo la intención que el usuario proporcionó originalmente. Y si no mantiene actualizados los datos de su zona horaria, entonces su sistema no estará al tanto de varios cambios que suceden en todo el mundo, como los cambios realizados en Egipto a principios de este año o los cambios que se realizarán en octubre para Rusia.

Último punto:si se implementa correctamente, la zona horaria de su servidor no debería importar. Compara UTC con UTC.