2010-12-16 31 views
11

Quiero obtener la hora actual de la zona horaria de EE. UU./Este. ¿Cómo lo lograría?php obtener la hora actual de US/Eastern

He intentado seguir el código pero muestra la hora de mi sistema.

<?php 
    date_default_timezone_set('US/Eastern'); 
    $currenttime = date('h:i:s:u'); 
    list($hrs,$mins,$secs,$msecs) = split(':',$currenttime); 
    //print "&time2=".$secs."&time1=".$mins."&time0=".$hrs; 
?> 

Estoy usando este script con flash así que comenté la línea 'imprimir'.

+1

¿Puedes intentar llamar a 'echo date_default_timezone_get()' y ver qué se repite? – Yahel

+0

Tenga en cuenta que 'US/Eastern', aunque está en desuso, sigue las reglas de 'Daylight Saving Time'. Es GMT-04: 00 o GMT-05: 00 dependiendo de la época del año. Si desea específicamente EDT (horario de verano del este, verano) O EST (horario estándar del este, invierno), tendrá que especificar el acrónimo de 3 caracteres o el desplazamiento directamente. –

Respuesta

17
<?php 
    echo date_default_timezone_get(); 
    $currenttime = date('h:i:s:u'); 
    list($hrs,$mins,$secs,$msecs) = split(':',$currenttime); 
    echo " => $hrs:$mins:$secs\n"; 

    date_default_timezone_set('US/Eastern'); 
    echo date_default_timezone_get(); 
    $currenttime = date('h:i:s:u'); 
    list($hrs,$mins,$secs,$msecs) = split(':',$currenttime); 
    echo " => $hrs:$mins:$secs\n"; 

    date_default_timezone_set('America/New_York'); 
    echo date_default_timezone_get(); 
    $currenttime = date('h:i:s:u'); 
    list($hrs,$mins,$secs,$msecs) = split(':',$currenttime); 
    echo " => $hrs:$mins:$secs\n"; 

?> 

parece funcionar aquí (en Berlín):

Europe/Berlin => 01:42:42 
US/Eastern => 07:45:18 
America/New_York => 07:45:18 
+0

tuve un error que creaba confusión, tuve que usar 'H' en lugar de 'h' en formato de fecha. Lo siento guyz ... y gracias también ... especialmente The MYYN cuya sugerencia date_default_timezone_get() me ayudó ... – booota

+0

Obsoleto: Función split() –

4

http://www.php.net/manual/en/timezones.php

Parece que el US/Eastern está en desuso. Pruebe America/New_York

EDIT esto probablemente no solucionará su problema, pero debe hacerlo de todos modos. Estar en desuso significa que podrían eliminarlo en el futuro.

2

La manera más fácil es probablemente usar gmmktime() para obtener el Unix timestamp para el GMT actual, luego subtract 5 hours de él. De esta forma, obtienes Eastern Time sin importar dónde esté el servidor.

+1

¿Y qué pasa cuando Eastern Standard Time cambia a Eastern Daylight Time (-4 GMT)? Esto no es realmente una solución sostenible. – Yahel

+0

No es posible. – beginner

4
$amNY = new DateTime('America/New_York'); 
$estTime = $amNY->format('h:i:s:u'); 

o si está usando PHP 5,4 y por encima de

estTime = (new DateTime('America/New_York'))->format('h:i:s:u'); 

date_default_timezone_set() afectará a la toda la escritura y deben usarse con cuidado

0

sólo tiene que utilizar

<?php 
Date_default_timezone('est'); 
$lv=date('l, F jS, Y, g:I:s A T,$ir['laston']); 
?> 
<b>last visit</b> <em>$lv.</em> 

Parece funcionar perfectamente para mí en mi juego en el que estoy trabajando. Eso sí, si quieres usarlo, simplemente elimina el $ ir ['laston'] y debería funcionar sin problemas