Zones horaires en PHP et MySQL
L'intégration d'un système de fuseaux horaires dans les applications PHP peut s'avérer difficile, mais elle est essentielle lors du traitement de données provenant de différents fuseaux horaires. Voici un guide complet pour répondre aux problèmes les plus courants et fournir des solutions pratiques.
Stockage des dates et heures dans MySQL
Conversion des dates-heures
Gestion de l'heure d'été (DST)
MySQL ne gère pas l'heure d'été de manière native. La classe DateTimeZone de PHP fournit des fuseaux horaires nommés qui gèrent automatiquement l'heure d'été en fonction de l'emplacement de l'utilisateur, qui doivent être utilisés pour les horodatages destinés à l'utilisateur.
Migration des données héritées
Si existant les données ont été insérées sans tenir compte des fuseaux horaires, utilisez la fonction CONVERT_TZ de MySQL pour corriger les horodatages lors des sélections et des mises à jour. Vous pouvez également mettre à jour les horodatages en les convertissant en UTC, puis en revenant au fuseau horaire local.
Sélection des fuseaux horaires pour les préférences de l'utilisateur
Exemple de code
<?php // Convert PHP datetime to UTC $utc = new DateTime('now', new DateTimeZone('UTC')); // Retrieve a list of named time zones $timezones = DateTimeZone::listIdentifiers(); // Convert to user's time zone (e.g., PST) $pst = new DateTimeZone('America/Los_Angeles'); $utc->setTimezone($pst); // Display converted timestamp echo "UTC: " . $utc->format('Y-m-d H:i:s') . "\n"; echo "PST: " . $utc->format('Y-m-d H:i:s') . "\n"; // Store user's time zone preference $userTimezone = 'America/Los_Angeles'; $query = "UPDATE users SET timezone = '$userTimezone' WHERE ..."; ?>
Remarque : Il est important de stocker et de convertir les horodatages de manière cohérente pour éviter les incohérences des données et confusion des utilisateurs. En suivant ces directives, vous pouvez gérer efficacement les fuseaux horaires dans vos applications PHP et MySQL.
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!