PHP Conference Japan 2024

IntlDateFormatter::setCalendar

datefmt_set_calendar

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::setCalendar -- datefmt_set_calendar设置格式化程序使用的日历类型

描述

面向对象风格

public IntlDateFormatter::setCalendar(IntlCalendar|int|null $calendar): bool

过程式风格

datefmt_set_calendar(IntlDateFormatter $formatter, IntlCalendar|int|null $calendar): bool

设置格式化程序使用的日历或日历类型。

参数

formatter

格式化程序资源。

calendar

这可以是:要使用的日历类型(默认为IntlDateFormatter::GREGORIAN,如果指定了null,也会使用此类型)或一个IntlCalendar 对象。

传入的任何IntlCalendar 对象都将被克隆;不会对参数对象进行任何修改。

只有在没有传递IntlCalendar 对象时才会保留格式化程序的时区,否则新的时区将是传递对象的时区。

返回值

成功时返回true,失败时返回false

变更日志

版本 描述
PECL intl 3.0.0 现在可以传递一个IntlCalendar 对象。

范例

示例 #1 datefmt_set_calendar() 示例

<?php
$fmt
= datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo
'格式化程序的日历是: ' . datefmt_get_calendar($fmt);
datefmt_set_calendar($fmt, IntlDateFormatter::TRADITIONAL);
echo
'现在格式化程序的日历是: ' . datefmt_get_calendar($fmt);
?>

示例 #2 面向对象示例

<?php
$fmt
= new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo
'格式化程序的日历是: ' . $fmt->getCalendar();
$fmt->setCalendar(IntlDateFormatter::TRADITIONAL);
echo
'现在格式化程序的日历是: ' . $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
"之前: ", $formatter->format($time), "\n";

/* 注意,不会使用日历的区域设置! */
$formatter->setCalendar(IntlCalendar::createInstance(
"America/New_York", "pt_PT@calendar=islamic"));

echo
"之后: ", $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

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top