Así que he intentado todo tipo de combinaciones para obtener una fecha de mi base de datos (usando Wordpress) para mostrar en el horario de verano británico y no puedo hacer que nada funcione.
¿Existe alguna solución simple que pueda tomar la cadena de fecha y asegurarse de que en el horario de verano en el Reino Unido sea una hora después de la hora UTC?
$classJson = $class->info; $classJsonAsArray = json_decode($classJson, TRUE); $classStartDate = strtotime($class->periodStart); $classStartTime = date('H:i',$classStartDate);
Así que actualmente $class->periodStart devuelve: 2022-04-06 08:30:00
La hora de ese evento debe ser las 9:30 a.m.
Todo lo que necesito que haga es mostrar la hora correcta, ya que en este momento, en la parte frontal se muestra como 8:30 am.
DateTime
maneja las zonas horarias bastante bien.
$dateStringInUtc = '2022-04-06 08:30:00'; $date = new DateTime($dateStringInUtc, new DateTimeZone('UTC')); $date->setTimezone(new DateTimeZone('Europe/London')); echo $date->format('Ymd H:i:s'); // will output 2022-04-06 09:30:00
Trabajar con DateTime y zonas horarias como en la respuesta aceptada es la mejor manera.
Pero también funciona con strtotime si la zona horaria se agrega a la cadena de fecha. Fecha luego devuelve la hora local para una marca de tiempo.
$utcDate = '2022-04-06 08:30:00'; echo date('Ymd H:i:s',strtotime($utcDate.' UTC'));