settimezone buenos america aires php date timezone gmt

buenos - set timezone php



cómo hacer que la clase datetime funcione con DST y sin DST en php? (1)

Prueba este código y avísame, ¿funciona?

function ConvertOneTimezoneToAnotherTimezone($time,$currentTimezone,$timezoneRequired,$considerDST=true) { // save current timezone $backup_tz = date_default_timezone_get(); date_default_timezone_set($currentTimezone); $t = strtotime($time); date_default_timezone_set($timezoneRequired); if (!$considerDST && (date(''I'', $t) == 1)) { if ($timezoneRequired == ''Australia/Lord_Howe'') $dst=''-30 minutes''; else $dst = "-1 hour"; $t = strtotime($dst, $t); } // restore old timezone $res = date(''Y-m-d H:i:s'', $t); date_default_timezone_set($backup_tz); return $res; } $mytime = ''2011-03-29 12:40:00.000''; $myzone = ''UTC''; echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, ''Australia/Adelaide'', true) . " (Adelaide DST=Yes)<br>"; echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, ''Australia/Adelaide'', false) . " (Adelaide DST=No)";

El parámetro adicional $ considerDST es booleano, por lo tanto, pase verdadero (u omita este parámetro, es el predeterminado) si desea DST o falso si no lo hace.

Hombre si quiere convertir los tiempos a UTC ... necesita pasar el mismo tiempo que los parámetros de entrada de la función.

¡NO PUEDES HACER ESTO!

$mytime = ''2011-03-30 12:52:00.000''; $myzone = ''Europe/Belgrade''; ... $mytime = ''2011-03-30 12:52:00.000''; $myzone = ''America/New_York'';

y esperan el mismo UTC porque mola el mismo tiempo ... Cuando son las 12:52 en Belgrado, son las 06:52 en NewYork, entonces ...

2011-03-20 12:52:00.000 [Europe/Belgrade] 2011-03-30 06:52:00.000 [America/NewYork] 2011-03-30 16:22:00.000 [Asia/Calcutta] or [Asia/Kolkata] 2011-03-30 19:52:00.000 [Asia/Pyongyang] etc...

tiene la misma hora UTC 2011-03-20 10: 52: 00,000

DESDE MI CÓDIGO ...

$mytime = ''2011-03-30 21:00:00.000''; $myzone = ''Australia/Melbourne''; echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, ''UTC'', true) . " (Melbourne->UTC DST=Yes)<br>"; echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, ''UTC'', false) . " (Melbourne->UTC DST=No)<br><br>"; $mytime = ''2011-03-30 15:30:00.000''; $myzone = ''Asia/Kolkata''; echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, ''UTC'', true) . " (India->UTC DST=Yes)<br>"; echo ConvertOneTimezoneToAnotherTimezone($mytime, $myzone, ''UTC'', false) . " (India->UTC DST=No)<br>";

ESE MISMO UTC 10:00 ... ¡No entiendo! Dime, ¿qué haces con tu código otra vez?

SALIDA:

2011-03-30 10:00:00 (Melbourne->UTC DST=Yes) 2011-03-30 10:00:00 (Melbourne->UTC DST=No) 2011-03-30 10:00:00 (India->UTC DST=Yes) 2011-03-30 10:00:00 (India->UTC DST=No)

He escrito el código en el que estoy usando la clase DateTime, que también convierte dst la siguiente hora de los países en formato GMT. Pero quiero que la funcionalidad donde necesito la clase DateTime funcione en la selección de la casilla de verificación. cuando un usuario comprueba dst, solo esa funcionalidad debería funcionar. aquí mi código va ........

function ConvertOneTimezoneToAnotherTimezone($time,$currentTimezone,$timezoneRequired) { $current_zone = new DateTimeZone($currentTimezone); // print_r($current_zone); //$gmt = new DateTimeZone(''GMT''); $date = new DateTime($time, $current_zone); //var_dump($date); //$date->setTimezone($gmt); $date->setTimezone(new DateTimeZone($timezoneRequired)); return $date->format(''Y-m-d H:i:s''); // Convert it back to Original timezone //$date->setTimezone($current_zone); //return $date->format(''Y-m-d H:i:s''); } $time=''2011-03-29 16:07:00.000''; echo "Current Date/Time is=".ConvertOneTimezoneToAnotherTimezone($time,''Asia/Kolkata'',''UTC'');

................ por favor ayúdame ..... cómo hacer que esto funcione .......