(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL intl >= 3.0.0)
IntlDateFormatter::setTimeZone -- datefmt_set_timezone — 设置格式化程序的时区
面向对象风格
过程式风格
$formatter
, IntlTimeZone|DateTimeZone|string|null $timezone
): bool设置 IntlDateFormatter 对象使用的时区。
formatter
格式化程序资源。
timezone
此格式化程序要使用的时区。可以使用以下形式指定:
null
,在这种情况下,将使用默认时区,如 ini 设置 date.timezone 或通过函数 date_default_timezone_set() 指定,以及 date_default_timezone_get() 返回的值。
一个 IntlTimeZone,它将直接使用。
一个 DateTimeZone。它的标识符将被提取,并创建一个 ICU 时区对象;时区将由 ICU 的数据库支持,而不是 PHP 的。
一个 string,它应该是有效的 ICU 时区标识符。参见 IntlTimeZone::createTimeZoneIDEnumeration()。还接受 "GMT+08:30"
这样的原始偏移量。
范例 #1 IntlDateFormatter::setTimeZone() 范例
<?php
ini_set('date.timezone', 'Europe/Amsterdam');
$formatter = IntlDateFormatter::create(NULL, NULL, NULL, "UTC");
$formatter->setTimeZone(NULL);
echo "NULL\n ", $formatter->getTimeZone()->getId(), "\n";
$formatter->setTimeZone(IntlTimeZone::createTimeZone('Europe/Lisbon'));
echo "IntlTimeZone\n ", $formatter->getTimeZone()->getId(), "\n";
$formatter->setTimeZone(new DateTimeZone('Europe/Paris'));
echo "DateTimeZone\n ", $formatter->getTimeZone()->getId(), "\n";
$formatter->setTimeZone('Europe/Rome');
echo "String\n ", $formatter->getTimeZone()->getId(), "\n";
$formatter->setTimeZone('GMT+00:30');
print_r($formatter->getTimeZone());
上面的例子将输出
NULL Europe/Amsterdam IntlTimeZone Europe/Lisbon DateTimeZone Europe/Paris String Europe/Rome IntlTimeZone Object ( [valid] => 1 [id] => GMT+00:30 [rawOffset] => 1800000 [currentOffset] => 1800000 )