zona santiago horaria date_default_timezone_set chile cambiar buenos america aires php mysql date datetime timezone

santiago - Establecer zona horaria en PHP y MySQL



timezone america buenos aires (6)

El mejor método Establecer zona horaria en PDO MySQL:

new PDO(''mysql:host=localhost;dbname=nametable'', ''username'', ''password'', [PDO::MYSQL_ATTR_INIT_COMMAND =>"SET NAMES utf8;SET time_zone = ''Europe/Rome''"]);

Estoy haciendo una aplicación donde necesito almacenar la fecha en MySQL usando la función PHP date() .

<?php $finalize_at = date(''Y-m-d H:i:s''); ?>

Estas fechas deben compararse en MySQL utilizando la función NOW() para devolver la diferencia en horas, por ejemplo:

SELECT TIMESTAMPDIFF( hour, NOW(), finalize_at ) FROM plans;

Pero el problema es que la fecha de la función de date(''Ymd H:i:s'') PHP date(''Ymd H:i:s'') usa la configuración de la zona horaria de PHP, y la función NOW() toma el timezome de MySQL del servidor MySQL.

Estoy tratando de resolver al hacer esto:

  1. date_default_timezone_set(''Europe/Paris''); Funciona solo para PHP.
  2. date.timezone= "Europe/Paris"; Funciona solo para PHP.
  3. SELECT CONVERT_TZ(now(), ''GMT'', ''MET''); Esta vuelta vacía
  4. mysql> SET time_zone = ''Europe/Paris''; Esto arroja un error desde la consola de MySQL.

Y la zona horaria no cambia para MySQL.

¿Hay alguna manera de cambiar la zona horaria para PHP y MySQL sin tener que hacerlo desde la consola MySQL, o configurar un cambio de zona horaria desde algún lugar en php.ini y hacer que estos valores estén disponibles tanto para PHP como para MySQL?

Mucho aprecio tu apoyo.


El mejor método Establecer zona horaria en PDO MySQL:

Si corresponde, ya sea por error, puede usar: fecha (''P'') Ejemplo:

new PDO(''mysql:host=localhost;dbname=nametable'', ''username'', ''password'', [PDO::MYSQL_ATTR_INIT_COMMAND =>"SET NAMES utf8;SET time_zone = ''".date(''P'')."''"]);


En PHP:

<?php define(''TIMEZONE'', ''Europe/Paris''); date_default_timezone_set(TIMEZONE);

Para MySQL:

<?php $now = new DateTime(); $mins = $now->getOffset() / 60; $sgn = ($mins < 0 ? -1 : 1); $mins = abs($mins); $hrs = floor($mins / 60); $mins -= $hrs * 60; $offset = sprintf(''%+d:%02d'', $hrs*$sgn, $mins); //Your DB Connection - sample $db = new PDO(''mysql:host=localhost;dbname=test'', ''dbuser'', ''dbpassword''); $db->exec("SET time_zone=''$offset'';");

Las zonas horarias PHP y MySQL ahora están sincronizadas dentro de su aplicación. ¡No es necesario ir a la consola php.ini o MySQL!

Esto es de este artículo en SitePoint .


Para PHP use esta función:

date_default_timezone_set()

MySQL:

default-time-zone=''timezone''

Si tiene el privilegio de root , puede establecer el valor de la zona horaria del servidor global en tiempo de ejecución con esta instrucción:

SET GLOBAL time_zone = timezone;

Zonas horarias por conexión. Cada cliente que se conecta tiene su propia configuración de zona horaria, dada por la sesión time_zone variable . Inicialmente, la variable de sesión toma su valor de la variable global time_zone , pero el cliente puede cambiar su propia zona horaria con esta declaración:

SET time_zone = timezone;


Puedes hacerlo fácilmente solo con las siguientes dos líneas de PHP.

$tz = (new DateTime(''now'', new DateTimeZone(''Asia/Kabul'')))->format(''P''); $pdo->exec("SET time_zone=''$tz'';");


Puedo cambiar mi zona horaria predeterminada mysql de la sección variable editando la fila que dice "zona horaria" en phpmyadmin.

Aquí también puede cambiar el formato y mucho más que puede encontrar en mysql support http://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html , espero que lo ayude.

Puede poner la misma zona horaria para php y mysql.