CakeFest 2024: The Official CakePHP Conference

DateTimeZone::getOffset

timezone_offset_get

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTimeZone::getOffset -- timezone_offset_getLiefert die Zeitverschiebung gegenüber der GMT

Beschreibung

Objektorientierter Stil

public DateTimeZone::getOffset(DateTimeInterface $datetime): int

Prozeduraler Stil

Diese Funktion gibt für das im Parameter datetime angegebene Datum und die Uhrzeit die Zeitverschiebung gegenüber der GMT zurück. Die Abweichung von der GMT wird mit den Zeitzoneninformationen berechnet, die im verwendeten DateTimeZone-Objekt enthalten sind.

Parameter-Liste

object

Nur bei prozeduralem Aufruf: Ein von date_create() zurückgegebenes DateTimeZone-Objekt.

datetime

Das DateTime-Objekt, das das Datum und die Uhrzeit enthält, von dem/der aus die Zeitverschiebung berechnet werden soll.

Rückgabewerte

Gibt die Zeitverschiebung in Sekunden zurück.

Beispiele

Beispiel #1 DateTimeZone::getOffset()-Beispiele

<?php
// Erstellen zweier Zeitzonenobjekte, eines für Taipeh (Taiwan) und eines für
// Tokio (Japan)
$dateTimeZoneTaipei = new DateTimeZone("Asia/Taipei");
$dateTimeZoneJapan = new DateTimeZone("Asia/Tokyo");

// Erstellen zweier DateTime-Objekte, die denselben Unix-Zeitstempel enthalten,
// aber unterschiedliche Zeitzonen zugewiesen bekommen.
$dateTimeTaipei = new DateTime("now", $dateTimeZoneTaipei);
$dateTimeJapan = new DateTime("now", $dateTimeZoneJapan);

// Berechnen der Abweichung des im Objekt $dateTimeTaipei enthaltenen
// Datums und der Uhrzeit von der GMT, wobei allerdings die für Tokio
// ($dateTimeZoneJapan) festgelegten Zeitzonenregeln verwendet werden.
$timeOffset = $dateTimeZoneJapan->getOffset($dateTimeTaipei);

// Sollte int(32400) anzeigen (für Daten nach
// Samstag, 8. September 01:00:00 1951 JST).
var_dump($timeOffset);
?>

add a note

User Contributed Notes 2 notes

up
-2
Anonymous
1 year ago
int offset does not cover fractional offsets of "rogue" locations such as Nepal etc.
up
-3
Daniel Vidal
1 year ago
Note that the DateTime parameter has no effect in the result returned by DateTimeZone::getOffset($DateTime), unless, it refers to a DateTime where there is daylight savings in the referenced DateTimeZone.

Ex.:
<?php
$timezone_brl
= new DateTimeZone('America/Sao_Paulo');
$timezone_eng = new DateTimeZone('Europe/London');
$timezone_aus = new DateTimeZone('Australia/Brisbane');

$dateTimes = [
new
DateTime()
, new
DateTime('now', $timezone_eng)
, new
DateTime('now', $timezone_aus)
, new
DateTime('now', $timezone_brl)
, new
DateTime('2000-06-10', $timezone_brl)
, new
DateTime('2000-12-10', $timezone_brl)
, new
DateTime('2020-12-10', $timezone_brl)
];

foreach(
$dateTimes as $dateTime)
{
echo
"\n" . $timezone_brl->getOffset($dateTime);
}
/**
* -10800
* -10800
* -10800
* -10800
* -10800 // No daylight savings in June/2000
* - 7200 // Brazil had daylight savings until 2020
* -10800 // No more daylight savings, so it returns -10800
*/

?>
To Top