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.
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.
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');
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'
]);