Quería preguntar si esto iba a funcionar, antes de entrar en un refactor completo de cómo manejo las fechas y horas.Almacenamiento de fechas y horas en UTC y conversión de la hora local en PHP/MySQL
Para enmarcar mi pregunta, aquí está mi problema ... Almaceno "acciones" tomadas por el usuario en una tabla de historial. Estas acciones tienen una marca de tiempo en ellos. Los usuarios pueden ser de todo el mundo y, por lo tanto, tienen diferentes zonas horarias. Quiero mostrar los elementos en el historial y mostrar las marcas de tiempo en la zona horaria local.
Además, sé que puedo usar campos de fecha y hora y simplemente almacenar formatos de hora UTC, pero estoy optando por usar la marca de tiempo para que pueda establecer un valor predeterminado para la hora actual.
¿Funcionará para mi problema?
Mi zona horaria del servidor será Los Ángeles
marcas de tiempo tienda como una marca de tiempo en MySQL. Tengo entendido que la marca de tiempo siempre se almacena como UTC. Los registros se almacenarán de manera predeterminada como creation_date O estableceré explícitamente UTC_TIMESTAMP(). Eficazmente, todos los registros en el db serán UTC.
Cuando un usuario inicia sesión, tomaré su zona horaria (la almaceno en el archivo db como configuración de usuario). Para este ejemplo, digamos que esta persona está en Nueva York.
Aquí es donde está mi pregunta. ¿Alguno de estos trabajos?
- a) Tome los datos del historial. Todas las marcas de tiempo se convertirán automáticamente de UTC a la hora de Los Ángeles. Elemento de historia de Foreach, convierta la marca de tiempo de Los Ángeles a Timestamp y eco de Nueva York.
O
- b) Establecer el php zona horaria "date_default_timezone_set" a Nueva York. Toma los datos del historial. Todas las marcas de tiempo son TODAVÍA en el tiempo de Los Angeles por el servidor todavía es tiempo de Los Ángeles. Elemento de historia de Foreach, solo repita la marca de tiempo porque "date_default_timezone_set" convertirá automáticamente la marca de tiempo de Los Angeles en Nueva York.
¿Funcionará la opción 4b? ¿Hay una mejor manera de convertir la hora de Los Ángeles a la hora de Nueva York?
¿Hay una mejor manera de hacer esto en general?
Almacenar en UTC, mostrar local al usuario es la solución prevaleciente. –