timezone_transitions_get()

1. 定义

该函数获取时区对象在两个时间之间进行过的时区更新过渡史,包括当时的时间戳、GMT标准时、是否夏令时和更新的时区缩写。 成功时返回所有成功转换的包含关联数组的数字索引数组。

2. 语法

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

timezone_transitions_get ( DateTimeZone $object [, int $timestamp_begin = PHP_INT_MIN [, int $timestamp_end = PHP_INT_MAX ]] ) : array

3. 参数说明

参数 可选性 数据类型 描述
$object 必需 DateTimeZone 时区对象
$timestamp_begin 可选 整型 起始时间戳,默认为php.ini配置中的整型最小值
$timestamp_end 可选 整型 结束时间戳,默认为php.ini配置中的整型最大值

4. 示例

<?php

// timezone_transitions_get()
// 获取时区对象在两个时间之间进行过的**时区更新过渡史**,包括当时的时间戳、GMT标准时、是否夏令时和更新的时区缩写

// 面向对象式
$timezone = new DateTimeZone('Asia/Shanghai');
$transitions = $timezone->getTransitions();
// var_dump($transitions);// 显示了从 PHP_INT_MIN 到 PHP_INT_MAX (表现为时间戳)期间进行过的时区更新过渡史,包括当时的时间戳、GMT标准时、是否夏令时和更新的时区缩写

// 面向过程式
$timezone = timezone_open('Asia/Shanghai');
$transitions = timezone_transitions_get($timezone, time(), time());
var_dump($transitions);
/* 输出:(显示了当前时间的时间戳、GMT标准时、是否夏令时和更新的时区缩写)
array(1) {
  [0]=>
  array(5) {
    ["ts"]=>
    int(1577699069)
    ["time"]=>
    string(24) "2019-12-30T09:44:29+0000"
    ["offset"]=>
    int(28800)
    ["isdst"]=>
    bool(false)
    ["abbr"]=>
    string(3) "CST"
  }
}
*/

$transitions = timezone_transitions_get($timezone, time() - 24*60*60*365*30, time());// 三十年前到现在
var_dump($transitions);
/* 输出:(显示了在此期间进行过的时区更新过渡史,包括当时的时间戳、GMT标准时、是否夏令时和更新的时区缩写)
array(5) {
  [0]=>
  array(5) {
    ["ts"]=>
    int(631619069)
    ["time"]=>
    string(24) "1990-01-06T09:44:29+0000"
    ["offset"]=>
    int(28800)
    ["isdst"]=>
    bool(false)
    ["abbr"]=>
    string(3) "CST"
  }
  [1]=>
  array(5) {
    ["ts"]=>
    int(640108800)
    ["time"]=>
    string(24) "1990-04-14T16:00:00+0000"
    ["offset"]=>
    int(32400)
    ["isdst"]=>
    bool(true)
    ["abbr"]=>
    string(3) "CDT"
  }
  [2]=>
  array(5) {
    ["ts"]=>
    int(653410800)
    ["time"]=>
    string(24) "1990-09-15T15:00:00+0000"
    ["offset"]=>
    int(28800)
    ["isdst"]=>
    bool(false)
    ["abbr"]=>
    string(3) "CST"
  }
  [3]=>
  array(5) {
    ["ts"]=>
    int(671558400)
    ["time"]=>
    string(24) "1991-04-13T16:00:00+0000"
    ["offset"]=>
    int(32400)
    ["isdst"]=>
    bool(true)
    ["abbr"]=>
    string(3) "CDT"
  }
  [4]=>
  array(5) {
    ["ts"]=>
    int(684860400)
    ["time"]=>
    string(24) "1991-09-14T15:00:00+0000"
    ["offset"]=>
    int(28800)
    ["isdst"]=>
    bool(false)
    ["abbr"]=>
    string(3) "CST"
  }
}
*/