obtener mexico_city formatear fecha espaƱol date_format date_default_timezone_set america actual php datetime timezone

mexico_city - php timezone



Convierta las fechas UTC a la hora local en PHP (9)

Responder

Convierta el horario de UTC a America / Denver

// create a $dt object with the UTC timezone $dt = new DateTime(''2016-12-12 12:12:12'', new DateTimeZone(''UTC'')); // change the timezone of the object without changing it''s time $dt->setTimezone(new DateTimeZone(''America/Denver'')); // format the datetime $dt->format(''Y-m-d H:i:s T'');

Notas

time() devuelve la marca de tiempo de unix , que es un número, no tiene zona horaria.

date(''Ymd H:i:s T'') devuelve la fecha en la zona horaria local actual.

gmdate(''Ymd H:i:s T'') devuelve la fecha en UTC

date_default_timezone_set() cambia la zona horaria local actual

cambiar un tiempo en una zona horaria

// create a $dt object with the America/Denver timezone $dt = new DateTime(''2016-12-12 12:12:12'', new DateTimeZone(''America/Denver'')); // change the timezone of the object without changing it''s time $dt->setTimezone(new DateTimeZone(''UTC'')); // format the datetime $dt->format(''Y-m-d H:i:s T'');

aquí puedes ver todas las zonas horarias disponibles

https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

aquí están todas las opciones de formateo

http://php.net/manual/en/function.date.php

Actualizar PHP zona horaria DB (en linux)

sudo pecl install timezonedb

Estoy almacenando las fechas UTC en el DB usando:

$utc = gmdate("M d Y h:i:s A");

y luego quiero convertir la fecha UTC guardada a la hora local del cliente.

¿Cómo puedo hacer eso?

Gracias


Aquí hay una forma directa de convertir la hora UTC del interrogador a la hora local. Esto es por un tiempo almacenado en una base de datos, etc., es decir, en cualquier momento. Solo tiene que encontrar la diferencia horaria entre la hora UTC y la hora local en la que está interesado y luego ajustar el tiempo UTC almacenado para agregarle la diferencia.

$df = "G:i:s"; // Use a simple time format to find the difference $ts1 = strtotime(date($df)); // Timestamp of current local time $ts2 = strtotime(gmdate($df)); // Timestamp of current UTC time $ts3 = $ts1-$ts2; // Their difference

A continuación, puede agregar esta diferencia a la hora UTC almacenada. (En mi lugar, Atenas, la diferencia es exactamente 5:00:00)

Ejemplo:

$time = time() // Or any other timestamp $time += $ts3 // Add the difference $dateInLocal = date("Y-m-d H:i:s", $time);


Dado un huso horario local, como ''América / Denver'', puede usar la clase DateTime para convertir la marca de tiempo UTC a la fecha local:

$timestamp = *********; $date = new DateTime("@" . $timestamp); $date->setTimezone(new DateTimeZone(''America/Denver'')); echo $date->format(''Y-m-d H:i:s'');


Guardo la fecha en el DB en formato UTC pero luego se los muestro al usuario final en su zona horaria local

// retrieve $d = (new /DateTime($val . '' UTC''))->format(''U''); return date("Y-m-d H:i:s", $d);


La aritmética de fecha no es necesaria si solo desea mostrar la misma marca de tiempo en diferentes zonas horarias:

$format = "M d, Y h:ia"; $timestamp = gmdate($format); date_default_timezone_set("UTC"); $utc_datetime = date($format, $timestamp); date_default_timezone_set("America/Guayaquil"); $local_datetime = date($format, $timestamp);


La función strtotime de PHP interpretará códigos de zona horaria, como UTC. Si obtiene la fecha de la base de datos / cliente sin el código de zona horaria, pero sabe que es UTC, puede agregarla.

Suponiendo que obtienes la fecha con el código de marca de tiempo (como "Fri Mar 23 2012 22:23:03 GMT-0700 (PDT)", que es lo que da el código de Javascript ""+(new Date()) ):

$time = strtotime($dateWithTimeZone); $dateInLocal = date("Y-m-d H:i:s", $time);

O si no lo hace, que es probable de MySQL, entonces:

$time = strtotime($dateInUTC.'' UTC''); $dateInLocal = date("Y-m-d H:i:s", $time);


Primero, obtenga la fecha en UTC; ya lo hizo, así que este paso sería una llamada a la base de datos:

$timezone = "UTC"; date_default_timezone_set($timezone); $utc = gmdate("M d Y h:i:s A"); print "UTC: " . date(''r'', strtotime($utc)) . "/n";

A continuación, configure su zona horaria local en PHP:

$timezone = "America/Guayaquil"; date_default_timezone_set($timezone);

Y ahora obtenga el desplazamiento en segundos:

$offset = date(''Z'', strtotime($utc)); print "offset: $offset /n";

Finalmente, agregue el desplazamiento a la marca de tiempo entera de su fecha de hora original:

print "LOCAL: " . date(''r'', strtotime($utc) + $offset) . "/n";



$UTC_Time = "2018-07-06 06:06:16"; echo "UTC Time ".$UTC_Time; $Indian_Time = TimeConverion($UTC_Time); echo "<br> Indian_Time ".$Indian_Time; function TimeConverion($UTC_Time) { date_default_timezone_set(''Europe/London''); $sTime = date("Y-m-d h:i:sa"); $ts3 = strtotime(date("G:i:s"))-strtotime($sTime); $utc = explode(" ",$UTC_Time); $time = strtotime($utc[1]); date_default_timezone_set("Asia/Calcutta"); $time += $ts3; // Add the difference return $utc[0]." ".date("H:i:s", $time); }