He estado leyendo acerca de cómo hacer esto toda la mañana, y el consenso general es el siguiente: almacene sus marcas de tiempo en UTC y calcule el desplazamiento desde allí.Visualización de zonas horarias sin utilizar UTC
Sin embargo, como la mayoría de las personas, estoy manteniendo una base de código existente y no puedo cambiar la forma en que almacenamos nuestras fechas. Al menos, no en el marco de tiempo asignado.
Así que mi pregunta es, ¿puedo hacer algo como esto de forma segura?
// this is my time zone
$timestamp = strtotime($timestampFromDatabase);
date_default_timezone_set('America/New York');
$tz = date_default_timezone_get();
// this is theoretically their timezone, which will eventually
// be taken from a session variable
date_default_timezone_set('Europe/Paris');
$offset = time() - $timestamp;
$timestamp -= $offset;
// now that I have the offset, display dates like this
date('r', $timestamp);
Algunas personas han desaconsejado hacer aritmética de fecha, pero ¿eso es lo que estoy haciendo aquí mal? ¿Hay una mejor manera? ¿Hay riesgos de los que debo tener cuidado? Estoy particularmente interesado en qué tipo de errores podría producir este método y, en su caso, ¿a quién afectarán?
Mi jefe es el tipo de persona que no le importa si el error solo afecta al 1% de la base de usuarios.
Editar: ¿Puedo aclarar esto? No parece tener demasiados interesados en esto. ¿Nadie? Incluso una sugerencia vaga o un enlace sería inmensamente útil.
También podría utilizar este método para actualizar su base de datos a la hora UTC en un fuera de trabajo para su uso futuro. –
Esto es increíble. Sin embargo, supongamos que ejecuto PHP 5.14, que no tiene este objeto. ¿Hay otra manera? –
Zend Framework tiene una solución basada en php en Zend_Date, pero solicita PHP 5.2.4 como requisito general para el framework. Podría funcionar. ¿Puedes actualizar o recompilar PHP? –