Zeitzonen in PHP und MySQL synchronisieren
Sie entwickeln eine Anwendung, die das Speichern von Daten in MySQL mithilfe der PHP-Funktion date() erfordert. Es ist notwendig, diese Daten in MySQL mit NOW() zu vergleichen, um Zeitunterschiede zu berechnen. Die PHP-Funktion date() verwendet jedoch die in PHP definierte Zeitzone, während NOW() die im MySQL-Server konfigurierte Zeitzone verwendet.
Um dieses Problem zu beheben, haben Sie verschiedene Ansätze ausprobiert:
Letztendlich bleibt die MySQL-Zeitzone unverändert.
Lösung
Zeitzonen in PHP und MySQL synchronisieren, ohne manuelle Konsolenbefehle oder Änderungen in 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>
Dieser Ansatz stellt sicher, dass sowohl PHP als auch MySQL dieselbe Zeitzone verwenden, wodurch Diskrepanzen bei der Datumsspeicherung und dem Datumsvergleich vermieden werden. Darüber hinaus entfällt die Notwendigkeit manueller Zeitzoneneinstellungen oder Änderungen globaler Konfigurationsdateien.
Das obige ist der detaillierte Inhalt vonWie synchronisiert man Zeitzonen in PHP und MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!