¿Cómo puedo tomar una fecha almacenada, como 2011-01-30 18:23:49, y ajustarla a cualquier zona horaria elegida? ¿Hay una manera simple como simplemente definir el huso horario por abreviación o sumar/restar x cantidad de horas? Básicamente, quiero que los usuarios puedan elegir su zona horaria y que esta fecha predeterminada se ajuste a la suya.ajustar la zona horaria
Respuesta
que el usuario elija su zona horaria
utilizar ese nombre de la zona o el desplazamiento con
date_default_timezone_set
para establecer la zona horaria predeterminada usada en funciones de fecha en el resto de la ejecución del script.Uso
date('Z')
para conseguir que la zona de horario en función del GMT en segundosConvertir la fecha almacenada a una marca de tiempo con
strtotime
- marcas de tiempo UNIX siempre son GMT, por lo que ahora tiene el tiempo en GMT.Agregue el desplazamiento del paso 3 para convertir ese tiempo a la zona horaria del usuario.
Use
date
nuevamente para formatear la marca de tiempo como una cadena en el formato de visualización deseado.
Ejemplo:
$user_timezone = 'America/Los_Angeles';
$stored_time = '2011-01-30 18:23:49';
date_default_timezone_set($user_timezone);
$timestamp = strtotime($stored_time);
$local_timestamp = $timestamp + date('Z');
$local_date = date('Y-m-d H:i:s', $local_timestamp);
echo $local_date;
Aquí viene mi solución. Lo probé con America/Los_Angeles como la zona horaria de los servidores, y mi zona horaria como usuarios. Supongo que la hora se almacena utilizando la zona horaria de los servidores.
<?php
// My (user) timezone
$user_timezone = 'Europe/Berlin';
// Server timezone
$stored_timezone = 'America/Los_Angeles';
// Date/Time stored in your DB, using timezone of the server (yours, that is)
$stored_datetime = '2011-01-29 22:40:00'; // this is the current time in L.A.
// Setting default to servers timezone if not done before
date_default_timezone_set($stored_timezone);
// converting to unix timestamp
$stored_timestamp = strtotime($stored_datetime);
// setting default to users timezone
date_default_timezone_set($user_timezone);
// converting to timestamp
$user_datetime = date('Y-m-d H:i:s', $stored_timestamp);
// setting default back to servers timezone
date_default_timezone_set($stored_timezone);
echo $user_datetime; // output is my current time
- 1. zona horaria por Coordinar
- 2. postgres zona horaria predeterminada
- 3. obtener usuario zona horaria
- 4. java incorrecta zona horaria
- 5. Python Zona horaria conversión
- 6. Java GregorianCalendar Zona horaria
- 7. Cómo ignorar la zona horaria del usuario y forzar la fecha() utiliza la zona horaria específica
- 8. Java: zona horaria por la que la zona horaria diferente da el mismo valor en milisec
- 9. Rails 3: Ajuste de la zona horaria a los usuarios actuales de zona horaria
- 10. cómo detectar la zona horaria del cliente?
- 11. DateTime.ParseExact, haga caso de la zona horaria
- 12. cómo cambio la zona horaria usando adb
- 13. Cómo configurar correctamente la zona horaria mysql
- 14. Cambios en la zona horaria rusa
- 15. ¿Cómo obtener la zona horaria del cliente?
- 16. HttpCookie.Expire las implicaciones de la zona horaria?
- 17. ¿Cómo cambio la zona horaria en CakePHP?
- 18. ¿NSDate en CoreData encapsula la zona horaria?
- 19. Rieles: obtenga #beginning_of_day en la zona horaria
- 20. Fecha de PostgreSQL() con la zona horaria
- 21. Cálculo de la zona horaria de Joda
- 22. Rails no convierte la zona horaria (PostgreSQL)
- 23. Posición del GPS en la zona horaria
- 24. Cambiar la zona horaria en MSYS
- 25. Cambiar la zona horaria en Android programáticamente
- 26. Determinar la zona horaria de un usuario
- 27. datetime para encadenar con la zona horaria
- 28. zona horaria local en Ruby
- 29. Cambiar zona horaria en Tomcat
- 30. MySQL cambio de zona horaria?
posible duplicado de [Ajuste de zona horaria en PHP con DateTime/DateTimeZone] (http://stackoverflow.com/questions/1445087/adjusting-time-zone-in-php-with-datetime-datetimezone) –