C'è un sacco di informazioni su come eseguire le regolazioni dei fusi orari in PHP, ma non ho trovato una risposta specifica per quello che voglio fare a causa di tutto il rumore.Regolazione del fuso orario in PHP con DateTime/DateTimeZone
Dato un orario in un fuso orario, voglio convertirlo all'ora in un altro fuso orario.
This è essenzialmente ciò che voglio fare, ma devo essere in grado di farlo utilizzando solo le librerie PHP integrate, non PEAR Date.
Questo è quello che ho fatto, ma mi sembra dare sempre il relativo offset GMT:
$los_angeles_time_zone = new DateTimeZone('America/Los_Angeles');
$hawaii_time_zone = new DateTimeZone('Pacific/Honolulu');
$date_time_los_angeles = new DateTime('2009-09-18 05:00:00', $los_angeles_time_zone);
printf("LA Time: %s<br/>", $date_time_los_angeles->format(DATE_ATOM));
$time_offset = $hawaii_time_zone->getOffset($date_time_los_angeles);
printf("Offset: %s<br/>", $time_offset);
Questa è l'uscita:
LA Time: 2009-09 -18T05: 00: 00-07: 00
Offset: -36000
mi aspettavo 3 ore (10.800 secondi). ma la cosa '-7: 00' mi dice che sta mantenendo tutto relativo al GMT, il che forse spiega perché mi sta dando l'offset "assoluto".
Come faccio a ottenere l'offset tra i due fusi orari senza tutto questo GMo hoohah?
Grazie.
UPDATE:
mi venne in mente che avrei potuto fare questo e ottenere ciò che voglio:
$date_time_los_angeles = new DateTime('2009-09-18 05:00:00', $los_angeles_time_zone);
printf("LA Time: %s<br/>", $date_time_los_angeles->format(DATE_ATOM));
$date_time_hawaii = new DateTime('2009-09-18 05:00:00', $hawaii_time_zone);
printf("Hawaii Time: %s<br/>", $date_time_hawaii->format(DATE_ATOM));
$time_offset = $los_angeles_time_zone->getOffset($date_time_los_angeles) - $hawaii_time_zone->getOffset($date_time_los_angeles);
printf("Offset: %s<br/>", $time_offset);
ma ci si sente scomodo per me. Qualcuno sa un modo più pulito per farlo?
Per inciso :), questi sono per PHP> = 5.3.0. – GZipp
Non sembrano prendere in considerazione l'ora legale. Sto usando le funzioni di cui sopra per trasformare CST in GMT e tutti i miei tempi sono fuori di 1 ora. –