(PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1)
IntlCalendar::set — 设置一个时间字段或同时设置几个通用字段
面向对象风格
$year
,$month
,$dayOfMonth
= NULL,$hour
= NULL,$minute
= NULL,$second
= NULL过程式风格
$cal
,$year
,$month
,$dayOfMonth
= NULL,$hour
= NULL,$minute
= NULL,$second
= NULL将特定字段设置为给定值,或同时设置几个通用字段。接受的值范围取决于日历是否使用宽松模式。
对于冲突的字段,最后设置的字段优先。
此方法不能使用恰好四个参数调用。
cal
一个IntlCalendar 实例。
field
一个IntlCalendar 日期/时间字段常量。这些是介于0
和 IntlCalendar::FIELD_COUNT
之间的整数值。
value
给定字段的新值。
year
month
IntlCalendar::FIELD_MONTH
的新值。月份序列从零开始,即 1 月用 0 表示,2 月用 1 表示,…,12 月用 11 表示,而 13 月(如果日历有)用 12 表示。
dayOfMonth
hour
minute
second
始终返回 true
。
示例 #1 IntlCalendar::set()
<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');
//后面调用的优先级更高
$cal = new IntlGregorianCalendar(2013, 6 /* 7 月 */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
var_dump(IntlDateFormatter::formatObject($cal));
$cal = new IntlGregorianCalendar(2013, 6 /* 7 月 */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
//时间尚未重新计算。如果我们清除扩展年份,
//之前设置的年份将被使用
$cal->clear(IntlCalendar::FIELD_EXTENDED_YEAR);
var_dump(IntlDateFormatter::formatObject($cal));
以上示例将输出
string(20) "01/07/2011, 00:00:00" string(20) "01/07/2012, 00:00:00"