Aktueller Standort: Startseite> Neueste Artikel> Kombinieren Sie TimeZone_identifiers_List und DateTime :: setTimeZone, um die Zonen für die Zeit von DateTime zu ändern

Kombinieren Sie TimeZone_identifiers_List und DateTime :: setTimeZone, um die Zonen für die Zeit von DateTime zu ändern

gitbox 2025-05-31

1. Verstehen Sie TimeZone_identifiers_List

timezone_identifiers_list ist eine integrierte PHP-Funktion, mit der alle verfügbaren Zeitzonenkennungen erhalten werden. Die Verwendung ist sehr einfach:

 <?php
$timezones = timezone_identifiers_list();
foreach ($timezones as $timezone) {
    echo $timezone . PHP_EOL;
}
?>

Dieser Code gibt alle Zeitzonennamen, die von PHP unterstützt werden, wie Asien/Shanghai , Europa/London , Amerika/New_york usw. aus.


2. Erstellen Sie ein DateTime -Objekt und setzen Sie die Anfangszeitzone

Die DateTime -Klasse kann ein Datums- und Zeitobjekt erstellen. Wenn die Zeitzone nicht angegeben ist, wird die Server -Standardzeitzone standardmäßig verwendet. Wir können auch ein Zeitzonenobjekt zur Erstellungszeit übergeben.

 <?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;
?>

Dieser Code wird ausgegeben: 2025-05-31 15:00:00 UTC .


3.. Verwenden Sie die SetTimeZone -Methode, um die Zeitzone zu ändern

Wenn wir die oben genannte Zeit in Shanghai in China konvertieren möchten, können wir sie über die SetTimeZone -Methode implementieren:

 <?php
$date->setTimezone(new DateTimeZone('Asia/Shanghai'));
echo $date->format('Y-m-d H:i:s T') . PHP_EOL;
?>

Das Ausgabeergebnis wird: 2025-05-31 23:00:00 CST , dh die entsprechende Zeit in Peking.


4. Kombinieren Sie TimeZone_identifiers_List und SetTimeZone , um die TimeZone dynamisch festzulegen

Manchmal möchten wir, dass der Benutzer einen aus der Liste aller Zeitzonen auswählt und das Programm dann die Zeit entsprechend der Auswahl anpasst. Der Beispielcode lautet wie folgt:

 <?php
// Holen Sie sich alle Zeitzonen
$timezones = timezone_identifiers_list();

// Angenommen, der von Benutzer ausgewählte Zeitzone ist 'Europe/London'
$userSelectedTimezone = 'Europe/London';

// Erstellen Sie zuerst eineUTCZeitDateTimeObjekt
$date = new DateTime('2025-05-31 15:00:00', new DateTimeZone('UTC'));

// Stellen Sie sicher, dass der von Benutzer ausgewählte Zeitzone gültig ist
if (in_array($userSelectedTimezone, $timezones)) {
    $date->setTimezone(new DateTimeZone($userSelectedTimezone));
    echo "Die vom Benutzer ausgewählte Zeit ist:" . $date->format('Y-m-d H:i:s T') . PHP_EOL;
} else {
    echo "Ungültige Zeitzonenauswahl!" . PHP_EOL;
}
?>

Wenn die vom Benutzer eingegebene Zeitzone ungültig ist, kann ein Fehler aufgefordert werden. Wenn es gültig ist, wird die angepasste Zeit korrekt angezeigt.


5. Vollständige Beispielintegration

Hier ist ein vollständiges Beispiel, das zeigt, wie Sie eine Zeitzonenliste erhalten und die Zeit nach der Benutzerauswahl konvertieren:

 <?php
// Holen Sie sich alle Zeitzonen
$timezones = timezone_identifiers_list();

// Simulieren Sie die Zeitzone der Benutzerauswahl(Kann durch Formulareingang ersetzt werden)
$userSelectedTimezone = 'gitbox.net/Europe/London';

// Entfernen Sie den Domain -Namensteil,Nur Zeitzonenkennungen bleiben erhalten
$parsedTimezone = str_replace('gitbox.net/', '', $userSelectedTimezone);

// 创建ZeitObjekt,StandardUTCZeit
$date = new DateTime('2025-05-31 15:00:00', new DateTimeZone('UTC'));

if (in_array($parsedTimezone, $timezones)) {
    $date->setTimezone(new DateTimeZone($parsedTimezone));
    echo "Die vom Benutzer ausgewählte Zeit ist:" . $date->format('Y-m-d H:i:s T') . PHP_EOL;
} else {
    echo "Ungültige Zeitzonenauswahl!" . PHP_EOL;
}
?>

In den obigen Schritten können wir die TimeZone_identifiers_List und DateTime :: SetTimeZone -Methoden flexibel kombinieren, um die Zeit- und Uhrzeit dynamisch nach Anforderungen zu ändern.