(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)
IntlCalendar::setTimeZone — 设置此日历使用的时区
面向对象风格
过程式风格
$calendar
, IntlTimeZone|DateTimeZone|string|null $timezone
): bool为该日历定义一个新的时区。对象表示的时间将被保留,而字段值将被牺牲。
calendar
一个 IntlCalendar 实例。
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 IntlCalendar::setTimeZone()
<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'es_ES');
$cal = new IntlGregorianCalendar(2013, 5 /* May */, 1, 12, 0, 0);
echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
echo "(instant {$cal->getTime()})\n";
$cal->setTimeZone(IntlTimeZone::getGMT());
echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
echo "(instant {$cal->getTime()})\n";
$cal->setTimeZone('GMT+03:33');
echo IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL), "\n";
echo "(instant {$cal->getTime()})\n";
上面的示例将输出
sábado, 1 de junio de 2013 12:00:00 Hora de verano de Europa occidental (instant 1370084400000) sábado, 1 de junio de 2013 11:00:00 GMT (instant 1370084400000) sábado, 1 de junio de 2013 14:33:00 GMT+03:33 (instant 1370084400000)