IntlCalendar::roll

Add value to field without carrying into more significant fields

&reftitle.description;

&style.oop;

public `bool` `IntlCalendar::roll` `int` `field` `mixed` `amountOrUpOrDown`

&style.procedural;

`bool` `intlcal_roll` `IntlCalendar` `cal` `int` `field` `mixed` `amountOrUpOrDown`

Adds a (signed) amount to a field. The difference with respect to `IntlCalendar::add` is that when the field value overflows, it does not carry into more significant fields.

&reftitle.parameters;

`cal`

- The IntlCalendar resource.

`field`

- &reference.intl.incfieldparam;

`amountOrUpOrDown`

- The (signed) amount to add to the field, &true; for rolling up (adding `1`), or &false; for rolling down (subtracting `1`).

&reftitle.returnvalues;

Returns &true; on success or &false; on failure.

&reftitle.examples;

### `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"

&example.outputs;

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

&reftitle.seealso;

- `IntlCalendar::add`
- `IntlCalendar::set`