DateTimeZone::getTransitions

timezone_transitions_get

(PHP 5 >= 5.2.0)

DateTimeZone::getTransitions -- timezone_transitions_getВозвращает все переходы для временной зоны

Описание

Объектно-ориентированный стиль

public array DateTimeZone::getTransitions ([ int $timestamp_begin [, int $timestamp_end ]] )

Процедурный стиль

array timezone_transitions_get ( DateTimeZone $object [, int $timestamp_begin [, int $timestamp_end ]] )

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

object

Только для процедурного стиля: Объект DateTimeZone, возвращаемый timezone_open()

timestamp_begin

Начальная метка времени.

timestamp_end

Конечная метка времени.

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

В случае успеха возвращает численно индексированный массив, содержащий ассоциативные массивы со всеми переходами или FALSE в случае возникновения ошибки.

Список изменений

Версия Описание
5.3.0 Были добавлены необязательные параметры timestamp_begin и timestamp_end.

Примеры

Пример #1 Пример использования timezone_transitions_get()

<?php
$timezone 
= new DateTimeZone("Europe/London");
$transitions $timezone->getTransitions();
print_r(array_slice($transitions03));
?>

Результатом выполнения данного примера будет что-то подобное:

Array
(
    [0] => Array
        (
            [ts] => -9223372036854775808
            [time] => -292277022657-01-27T08:29:52+0000
            [offset] => 3600
            [isdst] => 1
            [abbr] => BST
        )

    [1] => Array
        (
            [ts] => -1691964000
            [time] => 1916-05-21T02:00:00+0000
            [offset] => 3600
            [isdst] => 1
            [abbr] => BST
        )

    [2] => Array
        (
            [ts] => -1680472800
            [time] => 1916-10-01T02:00:00+0000
            [offset] => 0
            [isdst] =>
            [abbr] => GMT
        )

)

Коментарии

Автор:
Getting a timezone's offset and other data at a specified point in time (now, for example) using the new PHP5.3 parameters:

<?php
$theTime 
time(); # specific date/time we're checking, in epoch seconds.

$tz = new DateTimeZone('America/Los_Angeles');
$transition $tz->getTransitions($theTime,$theTime);

# only one array should be returned into $transition. Now get the data:
$offset $transition[0]['offset'];
$abbr $transition[0]['abbr'];
?>

Before PHP5.3, you'd have to loop through all of the Transitions up until the current point in time, which would be a very inefficient process.
2010-03-05 13:19:18
http://php5.kiev.ua/manual/ru/datetimezone.gettransitions.html
Beware if you use getTransitions() without a minimum date, it can be slow...
2013-08-05 16:38:34
http://php5.kiev.ua/manual/ru/datetimezone.gettransitions.html
Автор:
This function will work in PHP < 5.3 :

/** returns an array with two elements for spring and fall DST in a given year
 *
 * @param integer $year
 * @param string $tz timezone
 * @return array
 **/
function getTransitionsForYear($year=null, $tz = null){
    if(!$year) $year=date("Y");
   
    if (!$tz) $tz = date_default_timezone_get();
    $timeZone = new DateTimeZone($tz);
   
    $transitions = $timeZone->getTransitions(mktime(0, 0, 0, 1, 1, $year));
    return array_slice($transitions, 1, 2);
}
2013-11-14 07:04:44
http://php5.kiev.ua/manual/ru/datetimezone.gettransitions.html
Автор:
This will work  in PHP_VERSION < 5.3:

<?php
/** returns an array with two elements for spring and fall DST in a given year
 *  works in PHP_VERSION < 5.3
 * 
 * @param integer $year
 * @param string $tz timezone
 * @return array
 **/
function getTransitionsForYear($year=null$tz null){
    if(!
$year$year=date("Y");

    if (!
$tz$tz date_default_timezone_get();
   
$timeZone = new DateTimeZone($tz);

    if (
version_compare(PHP_VERSION'5.3.0') >= 0) {
       
$transitions $timeZone->getTransitions(mktime(00021$year),mktime(0001131$year));
       
$index=1;
    } else {
       
// since 1980 it is regular, the 29th element is 1980-04-06
            // change this in your timezone
           
$first_regular_index=29;
           
$first_regular_year=1980;
       
$transitions $timeZone->getTransitions();
       
$index=($year-$first_regular_year)*2+$first_regular_index;
    }
    return 
array_slice($transitions$index2);
}
2013-11-14 19:06:46
http://php5.kiev.ua/manual/ru/datetimezone.gettransitions.html

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