Cómo sincronizar la zona horaria entre php y mysql

  • Autor Autor fabgonber
  • Fecha de inicio Fecha de inicio
fabgonber

fabgonber

Iota
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Hola a todos, hoy tuve que asegurarme que tanto php y mysql tengan la misma hora, esto hice:

PHP:
    date_default_timezone_set("America/Santiago");
    $zona_horaria = date("P"); // zona horaria en el formato que le gusta a mysql
    $sql = "set time_zone = '$zona_horaria'";
    $mysqli->query($sql);
Funcionó, se aceptan mejores ideas.
 
si esta bien solo establece eso en la conexión, ya que es la forma correcta de sincronizar PHP y MySQL con la zona horaria por que lo otro seria establecer la zona horaria globalmente en la configuración de MySQL o desde el php.ini o sistema operativo
 
Hola a todos, hoy tuve que asegurarme que tanto php y mysql tengan la misma hora, esto hice:

PHP:
    date_default_timezone_set("America/Santiago");
    $zona_horaria = date("P"); // zona horaria en el formato que le gusta a mysql
    $sql = "set time_zone = '$zona_horaria'";
    $mysqli->query($sql);
Funcionó, se aceptan mejores ideas.

En funcionalidad se ve que está OK...

Otra cosa es "optimización"...... ¿Dónde lo ejecutas? ¿es recurrente? ..... etc...
 
si esta bien solo establece eso en la conexión, ya que es la forma correcta de sincronizar PHP y MySQL con la zona horaria por que lo otro seria establecer la zona horaria globalmente en la configuración de MySQL o desde el php.ini o sistema operativo
Tocar el sistema operativo muchas veces es inviable, ejemplo: mi cliente está en un compartido, o si su vps es un linux con el cual no estoy familiarizado.

Otra cosa es "optimización"...... ¿Dónde lo ejecutas? ¿es recurrente? ..... etc...
en el tipico config.inc.php donde tienes las credenciales de la base de datos y la conexión a la misma.
 
Yo veo bastante bien el código, pero te recomiendo que en lugar de pasar la cadena "America/Santiago" uses la constante DateTimeZone::AMERICA_SANTIAGO.
Gracias por el dato.

Y para ajustar la zona horaria en MySQL puedes usar la función SET time_zone de forma directa en tu consulta: $mysqli->query("SET time_zone = 'America/Santiago'");
Eso fue lo primero que intenté pero dio error, según leí para poder hacerlo debe estar poblada una tabla de configuración del mysql que en mi server no lo está, antes de hacerlo pensé... "y si mi cliente tampoco la tiene"
 
en ves directo desde php, porque no desde .htaccess? agregando:
Insertar CODE, HTML o PHP:
php_value date.timezone 'America/Santiago'
o usar
Insertar CODE, HTML o PHP:
SetEnv TZ 'America/Santiago'

o creando un php.ini en el root de tu dominio o usando el editor de php.ini de cpanel...

y el mysql te da error porque tienes que usar los timezone no el nombre. si usas, ejemplo -03:00 te funcionara y no si pones America/Argentina, para que funcione el nombre, mysql tiene que tener los nombres agregados en su tabla.
 
y el mysql te da error porque tienes que usar los timezone no el nombre. si usas, ejemplo -03:00 te funcionara
Pregunta: ¿Cómo resuelves el tema del -03:00 en países con cambio de hora invierno/verano?

Lo de hacerlo en .htaccess, php.ini no sabía que existía, ¡muchas gracias!
 
Pregunta: ¿Cómo resuelves el tema del -03:00 en países con cambio de hora invierno/verano?

Lo de hacerlo en .htaccess, php.ini no sabía que existía, ¡muchas gracias!
Si con php.ini o .htacess es la mejor opción, te olvidas de tocar cada archivo y asigarle el horario que nuevo
 
Leí que hay que tocar el cpanel, no me gustó eso. Mientras menos toques de la configuración del cliente, mejor.

o .htacess es la mejor opción,
Si esto me parece la mejor opción.

te olvidas de tocar cada archivo y asigarle el horario que nuevo
nunca he tocado cada archivo... siempre parto con include "configuracion.php" que es el lugar donde están las credenciales de la base de datos entre otras cosas.
 
Leí que hay que tocar el cpanel, no me gustó eso. Mientras menos toques de la configuración del cliente, mejor.


Si esto me parece la mejor opción.


nunca he tocado cada archivo... siempre parto con include "configuracion.php" que es el lugar donde están las credenciales de la base de datos entre otras cosas.
no es necesario cpanel para editar l php.ini... solo creas un archivo con ese nombre y le pones el codigo que necesitas.
Respecto a horario verano o no, se toca a hacer a mano.
 
no es necesario cpanel para editar l php.ini... solo creas un archivo con ese nombre y le pones el codigo que necesitas.
¿y dónde lo colocas? ¿en el public_html?

Respecto a horario verano o no, se toca a hacer a mano.
con mi solución inicial:
PHP:
date_default_timezone_set("America/Santiago");
$zona_horaria = date("P"); // zona horaria en el formato que le gusta a mysql
$sql = "set time_zone = '$zona_horaria'";
$mysqli->query($sql);
se actualiza solo.
 

Temas similares

Atrás
Arriba