IntlCalendar::roll

次のフィールドを繰り上げずに、フィールドに値を加算する

説明

オブジェクト指向型

public bool IntlCalendar::roll(int $field, intbool $value)

手続き型

bool intlcal_roll(IntlCalendar $calendar, int $field, intbool $value)

(符号付きの)量をフィールドに加算します。 IntlCalendar::add との違いは、 フィールドの値がオーバーフローしても、 次のフィールドの値が繰り上がらないことです。

パラメータ

calendar

IntlCalendar クラスのインスタンス。

field

IntlCalendar の日付/時刻 フィールド定数 のいずれか。 0 から IntlCalendar::FIELD_COUNT までの間の整数値です。

value

フィールドに加算する(符号付きの)量。 true を指定すると値を増やします (つまり、1 を足します)。 false を指定すると値を減らします (つまり、1 を引きます)。

戻り値

成功時に true を返します。 失敗した場合は false を返します。

例1 IntlCalendar::roll

<?php
ini_set('date.timezone', 'Europe/Lisbon');
ini_set('intl.default_locale', 'pt_PT');

$cal = new IntlGregorianCalendar(2013, 5 /* June */, 30);

$cal->add(IntlCalendar::FIELD_DAY_OF_MONTH, 1);
var_dump(IntlDateFormatter::formatObject($cal)); // "01/07/2013, 00:00:00"

$cal->set(2013, 5 /* June */, 30);
$cal->roll(IntlCalendar::FIELD_DAY_OF_MONTH, true); // roll up, same as rolling +1
var_dump(IntlDateFormatter::formatObject($cal)); // "01/06/2013, 00:00:00"

上の例の出力は以下となります。

string(20) "01/07/2013, 00:00:00"
string(20) "01/06/2013, 00:00:00"

参考

  • IntlCalendar::add
  • IntlCalendar::set