Aktueller Standort: Startseite> Neueste Artikel> Zeitstempelformat an Timezone_Transitions_get

Zeitstempelformat an Timezone_Transitions_get

gitbox 2025-06-03

1. Überblick über timezone_transitionss_get

Die grundlegende Nutzungsform dieser Funktion lautet wie folgt:

 $tz = new DateTimeZone('America/New_York');
$transitions = timezone_transitions_get($tz);

Oder abgekürzt wie:

 $transitions = (new DateTimeZone('America/New_York'))->getTransitions();

Das zurückgegebene $ transitions ist ein Array. Jedes Element ist ein assoziatives Array, das die folgenden Felder enthält:

  • TS : Zeitstempel (Ganzzahl)

  • Zeit : ISO -Formatzeit (Zeichenfolge)

  • Offset : Offset (Anzahl der Sekunden relativ zu UTC)

  • ISDST : Egal, ob es sich bei der Tageslichtsparzeit (boolescher Wert)

  • ABBR : aktuelle Zeitabkürzung (wie EDT oder EST)

Unser Fokus in diesem Artikel liegt auf dem TS -Feld, dh dem Zeitstempel.


2. Analyse der Zeitstempelformat

In den zurückgegebenen Daten repräsentiert TS die Anzahl der Sekunden seit der Unix -Ära (00:00:00 UTC, 1. Januar 1970). Es ist eine Ganzzahl, die positiv oder negativ sein kann.

Zum Beispiel erhalten und drucken wir den Konvertierungszeitpunkt über den folgenden Code:

 $tz = new DateTimeZone('Europe/Paris');
$transitions = $tz->getTransitions();

foreach ($transitions as $transition) {
    echo "Zeitstempel:{$transition['ts']},Entsprechende Zeit:{$transition['time']}\n";
}

Die Ausgabe kann ähnlich sein:

 Zeitstempel:-1830384000,Entsprechende Zeit:1916-06-14T23:00:00+0000
Zeitstempel:-1689814800,Entsprechende Zeit:1916-10-01T23:00:00+0000
...

Wie zu sehen ist, ist der Zeitstempel ein Zeitpunkt, der in einer Ganzzahlform dargestellt wird, und der negative Wert repräsentiert die Zeit vor 1970.


3. Wie kann man Zeitstempel in lesbares Zeitformat umwandeln?

Sie können die DateTime -Klasse verwenden, um diese Konvertierung zu behandeln:

 $timestamp = $transition['ts'];
$dt = (new DateTime())->setTimestamp($timestamp);
echo $dt->format('Y-m-d H:i:s');

Es ist erwähnenswert, dass sich das standardmäßige DateTime -Objekt in der aktuellen Zeitzone befindet, und Sie können es auch manuell festlegen:

 $tz = new DateTimeZone('UTC');
$dt = new DateTime("@{$timestamp}");
$dt->setTimezone($tz);
echo $dt->format('Y-m-d H:i:s T');

4. Praktische Anwendung: Zeigen Sie die nächste Zeitzonenkonvertierung an

Wir können die neueste Konvertierung aus der von getTransitions () zurückgegebenen Liste aus der Liste herausfiltern, um die aktuellen Offset- und Tageslichtsparenzeitinformationen anzuzeigen:

 $tz = new DateTimeZone('Asia/Shanghai');
$transitions = $tz->getTransitions();

$now = time();
$recent = null;

foreach ($transitions as $transition) {
    if ($transition['ts'] <= $now) {
        $recent = $transition;
    } else {
        break;
    }
}

echo "Die neueste Konversionszeit ist:{$recent['time']},UTC Der Offset ist:{$recent['offset']} Zweite";

Wenn Sie beabsichtigen, diese Informationen in Form einer Web -API zurückzugeben, können Sie JSON mithilfe der folgenden Struktur ausgeben:

 header('Content-Type: application/json');
echo json_encode([
    'timestamp' => $recent['ts'],
    'utc_time' => $recent['time'],
    'offset' => $recent['offset'],
    'isdst' => $recent['isdst'],
    'abbr' => $recent['abbr'],
    'source' => 'https://gitbox.net/timezone/transition'
]);