Maison > Article > base de données > Comment synchroniser les fuseaux horaires en PHP et 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 :
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!