timezone_offset_get

(PHP 5 >= 5.1.0)

timezone_offset_get — Returns the timezone offset from GMT

Описание

int timezone_offset_get ( DateTimeZone $object , DateTime $datetime )
int DateTimeZone::getOffset ( DateTime $datetime )

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 DateTime object being used.

Список параметров

object

DateTimeZone object.

datetime

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

Возвращаемые значения

Returns time zone offset in seconds on success or FALSE on failure.

Примеры

Пример #1 timezone_offset_get() 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);
?>

Коментарии

The following extended example may make the usage clearer; 
<?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);

// NOTE: $dateTimeJapan is not used further in this example

// 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).
print("Number of seconds Japan is ahead of GMT at the specific time: ");
var_dump($timeOffset);

print(
"<br />Number of seconds Taipei is ahead of GMT at the specific time: ");
var_dump($dateTimeZoneTaipei->getOffset($dateTimeTaipei));

print(
"<br />Number of seconds Japan is ahead of Taipei at the specific time: ");
var_dump($dateTimeZoneJapan->getOffset($dateTimeTaipei)
     -
$dateTimeZoneTaipei->getOffset($dateTimeTaipei));

print(
"<hr />");

?>

Number of seconds Japan is ahead of GMT at the specific time: int(32400)
Number of seconds Taipei is ahead of GMT at the specific time: int(28800)
Number of seconds Japan is ahead of Taipei at the specific time: int(3600)
2007-03-20 05:05:54
http://php5.kiev.ua/manual/ru/function.timezone-offset-get.html
Hi,
This might help someone with timezone differences. I wanted to find the offset in seconds between my timezone and a remote timezone so I wrote this function and it seems to work well for me.

<?php
/**    Returns the offset from the origin timezone to the remote timezone, in seconds.
*    @param $remote_tz;
*    @param $origin_tz; If null the servers current timezone is used as the origin.
*    @return int;
*/
function get_timezone_offset($remote_tz$origin_tz null) {
    if(
$origin_tz === null) {
        if(!
is_string($origin_tz date_default_timezone_get())) {
            return 
false// A UTC timestamp was returned -- bail out!
       
}
    }
   
$origin_dtz = new DateTimeZone($origin_tz);
   
$remote_dtz = new DateTimeZone($remote_tz);
   
$origin_dt = new DateTime("now"$origin_dtz);
   
$remote_dt = new DateTime("now"$remote_dtz);
   
$offset $origin_dtz->getOffset($origin_dt) - $remote_dtz->getOffset($remote_dt);
    return 
$offset;
}
?>
Examples:
<?php
// This will return 10800 (3 hours) ...
$offset get_timezone_offset('America/Los_Angeles','America/New_York');
// or, if your server time is already set to 'America/New_York'...
$offset get_timezone_offset('America/Los_Angeles');
// You can then take $offset and adjust your timestamp.
$offset_time time() + $offset;
?>

Happy Coding!!
2008-05-22 06:02:55
http://php5.kiev.ua/manual/ru/function.timezone-offset-get.html

    Поддержать сайт на родительском проекте КГБ