📜  PHP | timezone_transitions_get()函数(1)

📅  最后修改于: 2023-12-03 15:33:35.263000             🧑  作者: Mango

PHP | timezone_transitions_get()函数

介绍

timezone_transitions_get() 函数用于获取一个时区所有的转换规则列表,返回一个数组。该函数可以用来获取某个时区的历史转换规则,比如在什么时间改变了时区规则,在哪个时间使用了夏令时等等。

该函数是一个内置的时区函数,仅适用于PHP 5.2.0及以上版本。

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

参数说明:

  • object:必需参数。一个 DateTimeZone 对象,表示要获取规则的时区。
  • timestamp_begin:可选参数。一个时间戳,表示要返回规则的开始时间。默认为 0,即从 Unix 纪元开始。
  • timestamp_end:可选参数。一个时间戳,表示要返回规则的结束时间。默认为 time(),即当前时间。
返回值

该函数返回一个数组,表示指定时区的转换规则。

数组包含了多个 DateTimeTransition 对象,每个对象表示一个特定的转换规则。DateTimeTransition 对象包含以下属性:

  • ts:转换发生的时间戳。
  • time:转换发生时的秒数。
  • isdst:该转换时是否处于夏令时。
  • abbr:该转换时使用的缩写。

下面是 DateTimeTransition 对象的示例:

array (
  'ts' => 946684800,
  'time' => -18000,
  'offset' => -21600,
  'isdst' => false,
  'abbr' => 'CST',
)
示例

下面是获取默认时区转换规则的示例:

$transitions = timezone_transitions_get();

foreach ($transitions as $transition) {
    echo "Transition at " . date('Y-m-d H:i:s', $transition['ts']) . "<br>";
}

下面是获取某个时区部分时间段的转换规则示例:

$timezone = new DateTimeZone('Asia/Shanghai');
$timestamp_begin = strtotime('2010-01-01 00:00:00');
$timestamp_end = strtotime('2020-01-01 00:00:00');

$transitions = timezone_transitions_get($timezone, $timestamp_begin, $timestamp_end);

foreach ($transitions as $transition) {
    echo "Transition at " . date('Y-m-d H:i:s', $transition['ts']) . "<br>";
}
参考资料