(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
IntlDateFormatter::setCalendar -- datefmt_set_calendar — 设置格式化程序使用的日历类型
面向对象风格
过程式风格
设置格式化程序使用的日历或日历类型。
formatter
格式化程序资源。
calendar
它可以是:要使用的 日历类型(默认值为 IntlDateFormatter::GREGORIAN
,如果指定了 null
,也会使用此类型),或者一个 IntlCalendar 对象。
传递的任何 IntlCalendar 对象都会被克隆;不会对参数对象进行任何修改。
只有在不传递 IntlCalendar 对象的情况下才会保留格式化程序的时区,否则新的时区将是传递的对象的时区。
示例 #1 datefmt_set_calendar() 示例
<?php
$fmt = datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo 'calendar of the formatter is : ' . datefmt_get_calendar($fmt);
datefmt_set_calendar($fmt, IntlDateFormatter::TRADITIONAL);
echo 'Now calendar of the formatter is : ' . datefmt_get_calendar($fmt);
?>
示例 #2 面向对象示例
<?php
$fmt = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo 'calendar of the formatter is : ' . $fmt->getCalendar();
$fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
echo 'Now calendar of the formatter is : ' . $fmt->getCalendar();
?>
上面的示例将输出
calendar of the formatter is : 1 Now calendar of the formatter is : 0
示例 #3 使用 IntlCalendar 参数的示例
<?php
$time = strtotime("2013-03-03 00:00:00 UTC");
$formatter = IntlDateFormatter::create("en_US", NULL, NULL, "Europe/Amsterdam");
echo "before: ", $formatter->format($time), "\n";
/* 注意日历的区域设置不会被使用! */
$formatter->setCalendar(IntlCalendar::createInstance(
"America/New_York", "pt_PT@calendar=islamic"));
echo "after: ", $formatter->format($time), "\n";
上面的示例将输出
before: Sunday, March 3, 2013 at 1:00:00 AM Central European Standard Time after: Saturday, Rabiʻ II 20, 1434 at 7:00:00 PM Eastern Standard Time