PHP Velho Oeste 2024

DateTimeZone::getOffset

timezone_offset_get

(PHP 5 >= 5.2.0, PHP 7)

DateTimeZone::getOffset -- timezone_offset_getReturns the timezone offset from GMT

Descrierea

Stil obiect-orientat

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

Stil procedural

timezone_offset_get ( DateTimeZone $object , DateTimeInterface $datetime ) : int

This function returns the offset to GMT for the date/time specified in the datetime parameter. The GMT offset is calculated with the timezone information contained in the DateTimeZone object being used.

Parametri

object

Doar pentru stilul procedural: Un obiect DateTimeZone întors de funcția timezone_open()

datetime

DateTime that contains the date/time to compute the offset from.

Valorile întoarse

Returns time zone offset in seconds.

Istoricul schimbărilor

Versiune Descriere
8.0.0 Prior to this version, false was returned on failure.
5.5.19, 5.6.3 datetime type changed to DateTimeInterface. Previously, DateTime.

Exemple

Example #1 DateTimeZone::getOffset() examples

<?php
// Create two timezone objects, one for Taipei (Taiwan) and one for
// Tokyo (Japan)
$dateTimeZoneTaipei = new DateTimeZone("Asia/Taipei");
$dateTimeZoneJapan = new DateTimeZone("Asia/Tokyo");

// Create two DateTime objects that will contain the same Unix timestamp, but
// have different timezones attached to them.
$dateTimeTaipei = new DateTime("now"$dateTimeZoneTaipei);
$dateTimeJapan = new DateTime("now"$dateTimeZoneJapan);

// Calculate the GMT offset for the date/time contained in the $dateTimeTaipei
// object, but using the timezone rules as defined for Tokyo
// ($dateTimeZoneJapan).
$timeOffset $dateTimeZoneJapan->getOffset($dateTimeTaipei);

// Should show int(32400) (for dates after Sat Sep 8 01:00:00 1951 JST).
var_dump($timeOffset);
?>

add a note add a note

User Contributed Notes 2 notes

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