(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
的新值。月份序列是从零开始的,即一月用0表示,二月用1表示……,十二月用11表示,而十二月(如果日历中有)用12表示。
dayOfMonth
hour
minute
second
始终返回true
。
版本 | 描述 |
---|---|
8.2.0 | 返回值类型现在是true ;之前是bool。 |
8.4.0 | 此方法已被弃用,建议使用IntlCalendar::setDate() 和 IntlCalendar::setDateTime() 方法。 |
示例 #1 IntlCalendar::set()
<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');
//稍后调用的方法优先级更高
$cal = new IntlGregorianCalendar(2013, 6 /* 七月 */, 1);
$cal->set(IntlCalendar::FIELD_YEAR, 2012);
$cal->set(IntlCalendar::FIELD_EXTENDED_YEAR, 2011);
var_dump(IntlDateFormatter::formatObject($cal));
$cal = new IntlGregorianCalendar(2013, 6 /* 七月 */, 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"