2011-03-31 17 views
62

Estoy tratando de escribir un script donde quiero convertir cualquier zona horaria a UTC y revertir. Pero de alguna parte llegué a saber que al convertir cualquier zona horaria a UTC con o sin consideración de DST dará el mismo tiempo de UTC. Por ejemplo: si trato de convertir éste:¿UTC observa el horario de verano?

$mytime = '2011-03-31 05:06:00.000'; 
$myzone = 'America/New_York'; 

a UTC con el horario de verano y sin horario de verano, voy a tener ..

(New_York->UTC DST=Yes)2011-03-31 09:06:00 
(New_York->UTC DST=No)2011-03-31 09:06:00 .......... 

¿Es esta corect ?? Si sí, entonces ¿por qué? ?? Por favor, que alguien me dé sus respuestas.

+0

Si usted nos muestra la secuencia de comandos, podemos ayudarle un poco mejor. –

+4

Y, en respuesta a su pregunta sobre el título, ningún UTC no observa el horario de verano; otras zonas, sin embargo, pueden. –

Respuesta

99

No, UTC en sí nunca tiene DST. Es el marco de referencia constante en el que otras zonas horarias se expresan en relación con.

Desde el Wikipedia UTC page:

UTC no cambia con un cambio de las estaciones, pero la hora local o la hora civil puede cambiar si una jurisdicción zona horaria observa ahorro de tiempo o tiempo de verano la luz del día. Por ejemplo, UTC es 5 horas antes de la hora local en la costa este de los Estados Unidos durante el invierno, pero 4 horas más adelante durante el verano.

En otras palabras, cuando una zona horaria observa el horario de verano, el desplazamiento de UTC cambia cuando hay una transición horario de verano, pero eso es esa zona horaria observar el horario de verano, no UTC.

Sin saber mucho sobre el manejo de la zona horaria de PHP, me parece extraño que pueda especificar "con horario de verano" o "sin horario de verano" en una conversión - las zonas horarias mismas especifican cuándo comienza el horario de verano ... no debería Tiene que ser algo que usted mismo especifique.

+1

"Sin saber mucho sobre el manejo de la zona horaria de PHP, me parece extraño que pueda especificar 'con DST' o 'sin DST' en una conversión" ... eso es probablemente porque no ha hecho mucho Pastas hipervinculadas programables.Este es el lenguaje con una función incorporada 'date_sunrise' para avisarte cuando salga el sol. No estoy seguro si se necesita DST para la conversión, pero es un ciudadano de primera clase de un objeto de fecha: http://php.net/manual/en/function.date.php. –

+0

@PaulDraper: ser un ciudadano de primera clase del objeto de fecha tiene un cierto sentido, simplemente no especificarlo por separado para la conversión. Sin embargo, he aprendido un poco más sobre algunas de las rutinas C subyacentes y sospecho que tienen mucho que ver con esto ... –

+1

Creo que está bien preguntar si es DST. No se puede pasar de un horario local + zona horaria a un horario UTC inequívoco sin esa información adicional. Esto se debe a que algunas localidades ocurren dos veces durante la transición de DST. – Tom

0

estoy teniendo el mismo problema, el uso de este código:

date_default_timezone_set('UTC'); 
$nowdate = date('l jS \of F Y h:i:s A'); 
echo "Current date and time is: " . $nowdate; 

Es verano ahora, y el tiempo de este código produce es una hora menos que - por lo que no creo que la hora UTC en PHP se ajusta a DST.

será interesante ver si alguien tiene la solución ...

EDIT:

encontrado este código en un foro, funciona a la perfección !!

date_default_timezone_set('Europe/London'); 
$TIME = date("m/d/Y H:i",time()); 

Para que luego pueda llamar a la fecha y hora actual usando $ TIME. La salida se puede ajustar para mostrarla de manera diferente cambiando el bit dentro de la etiqueta de fecha(). Si desea ajustar la salida de date(), utilice esta guía: http://php.net/manual/en/function.time.php

Espero que esto ayude :)

Cuestiones relacionadas