(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)
IntlCalendar::createInstance — 创建一个新的 IntlCalendar
面向对象风格
$timezone
= null
, ?string $locale
= null
): ?IntlCalendar过程式风格
$timezone
= null
, ?string $locale
= null
): ?IntlCalendar给定一个时区和区域设置,此方法将创建一个 IntlCalendar 对象。此工厂方法可能返回 IntlCalendar 的子类。
创建的日历将代表它创建时的时刻,基于系统时间。所有字段都可以通过调用无参数的 IntCalendar::clear() 来清除。另请参阅 IntlGregorianCalendar::__construct()。
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"
这样的原始偏移量。
locale
创建的 IntlCalendar 实例,或在失败时返回 null
。
示例 #1 IntlCalendar::createInstance()
<?php
ini_set('intl.default_locale', 'es_ES');
ini_set('date.timezone', 'Europe/Madrid');
$cal = IntlCalendar::createInstance();
echo "No arguments\n";
var_dump(get_class($cal),
IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));
echo "\n";
echo "Explicit timezone\n";
$cal = IntlCalendar::createInstance(IntlTimeZone::getGMT());
var_dump(get_class($cal),
IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));
echo "\n";
echo "Explicit locale (with calendar)\n";
$cal = IntlCalendar::createInstance(NULL, 'es_ES@calendar=persian');
var_dump(get_class($cal),
IntlDateFormatter::formatObject($cal, IntlDateFormatter::FULL));
以上示例将输出
No arguments string(21) "IntlGregorianCalendar" string(68) "martes 18 de junio de 2013 14:11:02 Hora de verano de Europa Central" Explicit timezone string(21) "IntlGregorianCalendar" string(45) "martes 18 de junio de 2013 12:11:02 GMT+00:00" Explicit locale (with calendar) string(12) "IntlCalendar" string(70) "martes 28 de Khordad de 1392 14:11:02 Hora de verano de Europa Central"