Timezone_Identifiants_list est une fonction intégrée PHP pour obtenir tous les identificateurs de fuseau horaire disponibles. Son utilisation est très simple:
<?php
$timezones = timezone_identifiers_list();
foreach ($timezones as $timezone) {
echo $timezone . PHP_EOL;
}
?>
Ce code sortira tous les noms de fuseau horaires pris en charge par PHP, comme l'Asie / Shanghai , l'Europe / Londres , l'Amérique / New_york , etc.
La classe DateTime peut créer un objet date et heure. Par défaut, si le fuseau horaire n'est pas spécifié, le fuseau horaire par défaut du serveur est utilisé. Nous pouvons également passer dans un objet de fuseau horaire au moment de la création.
<?php
$date = new DateTime('2025-05-31 15:00:00', new DateTimeZone('UTC'));
echo $date->format('Y-m-d H:i:s T') . PHP_EOL;
?>
Ce code sortira: 2025-05-31 15:00:00 UTC .
Si nous voulons convertir ce qui est ci-dessus en temps Shanghai en Chine, nous pouvons le mettre en œuvre via la méthode SetTimeZone :
<?php
$date->setTimezone(new DateTimeZone('Asia/Shanghai'));
echo $date->format('Y-m-d H:i:s T') . PHP_EOL;
?>
Le résultat de sortie deviendra: 2025-05-31 23:00:00 CST , c'est-à-dire le temps de Pékin correspondant.
Parfois, nous pourrions vouloir que l'utilisateur en sélectionne un dans la liste de tous les calendriers, et le programme ajuste ensuite l'heure en fonction de la sélection. L'exemple de code est le suivant:
<?php
// Obtenez tous les fuseaux horaires
$timezones = timezone_identifiers_list();
// Supposons que le fuseau horaire sélectionné par l'utilisateur est 'Europe/London'
$userSelectedTimezone = 'Europe/London';
// En créer un en premierUTCTempsDateTimeObjet
$date = new DateTime('2025-05-31 15:00:00', new DateTimeZone('UTC'));
// Vérifiez que le fuseau horaire sélectionné par l'utilisateur est valide
if (in_array($userSelectedTimezone, $timezones)) {
$date->setTimezone(new DateTimeZone($userSelectedTimezone));
echo "Le temps sélectionné par l'utilisateur est:" . $date->format('Y-m-d H:i:s T') . PHP_EOL;
} else {
echo "Sélection de fuseau horaire non valide!" . PHP_EOL;
}
?>
Si le fuseau horaire saisi par l'utilisateur n'est pas valide, une erreur peut être invitée; S'il est valide, le temps ajusté sera affiché correctement.
Voici un exemple complet montrant comment obtenir une liste de fuseaux horaires et convertir l'heure après la sélection des utilisateurs:
<?php
// Obtenez tous les fuseaux horaires
$timezones = timezone_identifiers_list();
// Simuler le fuseau horaire de sélection des utilisateurs(Peut être remplacé par l'entrée de formulaire)
$userSelectedTimezone = 'gitbox.net/Europe/London';
// Supprimer la partie du nom de domaine,Seuls les identificateurs de fuseau horaire sont préservés
$parsedTimezone = str_replace('gitbox.net/', '', $userSelectedTimezone);
// 创建tempsObjet,défautUTCtemps
$date = new DateTime('2025-05-31 15:00:00', new DateTimeZone('UTC'));
if (in_array($parsedTimezone, $timezones)) {
$date->setTimezone(new DateTimeZone($parsedTimezone));
echo "Le temps sélectionné par l'utilisateur est:" . $date->format('Y-m-d H:i:s T') . PHP_EOL;
} else {
echo "Sélection de fuseau horaire non valide!" . PHP_EOL;
}
?>
Grâce aux étapes ci-dessus, nous pouvons combiner flexiblement les méthodes Timezone_identifiers_list et DateTime :: setTimeZone pour modifier dynamiquement la date et l'heure en fonction des exigences.