Maison  >  Article  >  base de données  >  Comment synchroniser les fuseaux horaires en PHP et MySQL ?

Comment synchroniser les fuseaux horaires en PHP et MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 11:26:02228parcourir

How to Synchronize Timezones in PHP and MySQL?

Synchronisation des fuseaux horaires en PHP et MySQL

Vous développez une application qui nécessite de stocker des dates dans MySQL à l'aide de la fonction PHP date(). Il est nécessaire de comparer ces dates dans MySQL en utilisant NOW() pour calculer les différences horaires. Cependant, la fonction PHP date() utilise le fuseau horaire défini en PHP, tandis que NOW() utilise le fuseau horaire configuré sur le serveur MySQL.

Pour résoudre ce problème, vous avez essayé différentes approches :

  • date_default_timezone_set('Europe/Paris') affecte uniquement PHP.
  • date.timezone = "Europe/Paris" reste isolé de PHP.
  • SELECT CONVERT_TZ(now(), ' GMT', 'MET') renvoie des résultats vides.
  • mysql> SET time_zone = 'Europe/Paris' provoque une erreur dans la console MySQL.

En fin de compte, le fuseau horaire MySQL reste inchangé.

Solution

Synchronisez les fuseaux horaires en PHP et MySQL sans commandes manuelles de la console ni modifications dans php.ini :

PHP :

<code class="php">define('TIMEZONE', 'Europe/Paris');
date_default_timezone_set(TIMEZONE);</code>

MySQL :

<code class="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);

// Assuming an existing DB connection named $db
$db->exec("SET time_zone='$offset';");</code>

Cette approche garantit que PHP et MySQL utilisent le même fuseau horaire, éliminant ainsi les écarts dans le stockage et la comparaison des dates. De plus, il élimine le besoin de paramètres manuels de fuseau horaire ou de modification des fichiers de configuration globale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn