PHP 8.0.24 Released!

DateTimeZone::getOffset

timezone_offset_get

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

DateTimeZone::getOffset -- timezone_offset_getRetourne le décalage GMT d'un fuseau horaire

Description

Style orienté objet

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

Style procédural

timezone_offset_get() retourne le décalage horaire par rapport au GMT pour le paramètre datetime. Le décalage GMT est calculé à partir des informations de fuseau horaire contenu dans l'objet DateTime.

Liste de paramètres

object

Seulement en style procédural : un DateTimeZone objet retourné par timezone_open()

datetime

Objet DateTime qui contient la date dont il faut calculer le décalage.

Valeurs de retour

Retourne le décalage horaire, exprimé en secondes, en cas de succès.

Historique

Version Description
8.0.0 Antérieur à cette version, false était retourné en cas d'échec.

Exemples

Exemple #1 Exemple avec DateTimeZone::getOffset()

<?php
// Crée deux objets fuseau horaire, un pour Taipei (Taiwan) et un pour 
// Tokyo (Japon)
$dateTimeZoneTaipei = new DateTimeZone("Asia/Taipei");
$dateTimeZoneJapan = new DateTimeZone("Asia/Tokyo");

// Crée deux objets DateTime qui contiennent le même timestamp Unix,
// mais sont situés dans deux fuseaux horaires différents.
$dateTimeTaipei = new DateTime("now"$dateTimeZoneTaipei);
$dateTimeJapan = new DateTime("now"$dateTimeZoneJapan);

// Calcule le décalage horaire GMT pour l'objet $dateTimeTaipei
// mais en utilisant le fuseau horaire de Tokyo
// ($dateTimeZoneJapan).
$timeOffset $dateTimeZoneJapan->getOffset($dateTimeTaipei);

// Devrait afficher int(32400) (pour les dates après le Sat Sep 8 01:00:00 1951 JST).
var_dump($timeOffset);
?>

add a note

User Contributed Notes 2 notes

up
0
Anonymous
1 month ago
int offset does not cover fractional offsets of "rogue" locations such as Nepal etc.
up
0
Daniel Vidal
1 month 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