# The IntlCalendar class

(PHP 5 >= 5.5.0, PHP 7, PECL >= 3.0.0a1)

## Introduction

## Class synopsis

IntlCalendar {
/* Constants */
const int FIELD_ERA = 0 ;
const int FIELD_YEAR = 1 ;
const int FIELD_MONTH = 2 ;
const int FIELD_WEEK_OF_YEAR = 3 ;
const int FIELD_WEEK_OF_MONTH = 4 ;
const int FIELD_DATE = 5 ;
const int FIELD_DAY_OF_YEAR = 6 ;
const int FIELD_DAY_OF_WEEK = 7 ;
const int FIELD_DAY_OF_WEEK_IN_MONTH = 8 ;
const int FIELD_AM_PM = 9 ;
const int FIELD_HOUR = 10 ;
const int FIELD_HOUR_OF_DAY = 11 ;
const int FIELD_MINUTE = 12 ;
const int FIELD_SECOND = 13 ;
const int FIELD_MILLISECOND = 14 ;
const int FIELD_ZONE_OFFSET = 15 ;
const int FIELD_DST_OFFSET = 16 ;
const int FIELD_YEAR_WOY = 17 ;
const int FIELD_DOW_LOCAL = 18 ;
const int FIELD_EXTENDED_YEAR = 19 ;
const int FIELD_JULIAN_DAY = 20 ;
const int FIELD_MILLISECONDS_IN_DAY = 21 ;
const int FIELD_IS_LEAP_MONTH = 22 ;
const int FIELD_FIELD_COUNT = 23 ;
const int FIELD_DAY_OF_MONTH = 5 ;
const int DOW_SUNDAY = 1 ;
const int DOW_MONDAY = 2 ;
const int DOW_TUESDAY = 3 ;
const int DOW_WEDNESDAY = 4 ;
const int DOW_THURSDAY = 5 ;
const int DOW_FRIDAY = 6 ;
const int DOW_SATURDAY = 7 ;
const int DOW_TYPE_WEEKDAY = 0 ;
const int DOW_TYPE_WEEKEND = 1 ;
const int DOW_TYPE_WEEKEND_OFFSET = 2 ;
const int DOW_TYPE_WEEKEND_CEASE = 3 ;
const int WALLTIME_FIRST = 1 ;
const int WALLTIME_LAST = 0 ;
const int WALLTIME_NEXT_VALID = 2 ;
/* Methods */
public add ( int `$field` , int `$amount` ) : bool
intlcal_add ( IntlCalendar `$cal` , int `$field` , int `$amount` ) : bool
public after ( IntlCalendar `$other` ) : bool
intlcal_after ( IntlCalendar `$cal` , IntlCalendar `$other` ) : bool
public before ( IntlCalendar `$other` ) : bool
intlcal_before ( IntlCalendar `$cal` , IntlCalendar `$other` ) : bool
public clear ([ int `$field` = NULL ] ) : bool
intlcal_clear ( IntlCalendar `$cal` [, int `$field` = NULL ] ) : bool
private __construct ( )
public static createInstance ([ mixed `$timeZone` = NULL [, string `$locale` = "" ]] ) : IntlCalendar
intlcal_create_instance ([ mixed `$timeZone` = NULL [, string `$locale` = "" ]] ) : IntlCalendar
public equals ( IntlCalendar `$other` ) : bool
intlcal_equals ( IntlCalendar `$cal` , IntlCalendar `$other` ) : bool
public fieldDifference ( float `$when` , int `$field` ) : int|false
intlcal_field_difference ( IntlCalendar `$cal` , float `$when` , int `$field` ) : int|false
public static fromDateTime ( mixed `$dateTime` ) : IntlCalendar
intlcal_from_date_time ( mixed `$dateTime` ) : IntlCalendar
public get ( int `$field` ) : int
intlcal_get ( IntlCalendar `$cal` , int `$field` ) : int
public getActualMaximum ( int `$field` ) : int|false
intlcal_get_actual_maximum ( IntlCalendar `$cal` , int `$field` ) : int|false
public getActualMinimum ( int `$field` ) : int|false
intlcal_get_actual_minimum ( IntlCalendar `$cal` , int `$field` ) : int|false
public static getAvailableLocales ( ) : array
intlcal_get_available_locales ( ) : array
public getDayOfWeekType ( int `$dayOfWeek` ) : int|false
intlcal_get_day_of_week_type ( IntlCalendar `$cal` , int `$dayOfWeek` ) : int|false
public getErrorCode ( ) : int
public getErrorMessage ( ) : string
public getFirstDayOfWeek ( ) : int|false
intlcal_get_first_day_of_week ( IntlCalendar `$cal` ) : int|false
public getGreatestMinimum ( int `$field` ) : int|false
intlcal_get_greatest_minimum ( IntlCalendar `$cal` , int `$field` ) : int|false
public static getKeywordValuesForLocale ( string `$key` , string `$locale` , bool `$commonlyUsed` ) : Iterator|false
static intlcal_get_keyword_values_for_locale ( string `$key` , string `$locale` , bool `$commonlyUsed` ) : Iterator|false
public getLeastMaximum ( int `$field` ) : int|false
intlcal_get_least_maximum ( IntlCalendar `$cal` , int `$field` ) : int|false
public getLocale ( int `$localeType` ) : string|false
intlcal_get_locale ( IntlCalendar `$cal` , int `$localeType` ) : string|false
public getMaximum ( int `$field` ) : int|false
intlcal_get_maximum ( IntlCalendar `$cal` , int `$field` ) : int|false
public getMinimalDaysInFirstWeek ( ) : int|false
intlcal_get_minimal_days_in_first_week ( IntlCalendar `$cal` ) : int|false
public getMinimum ( int `$field` ) : int|false
intlcal_get_minimum ( IntlCalendar `$cal` , int `$field` ) : int|false
public static getNow ( ) : float
intlcal_get_now ( ) : float
public getRepeatedWallTimeOption ( ) : int
intlcal_get_repeated_wall_time_option ( IntlCalendar `$cal` ) : int
public getSkippedWallTimeOption ( ) : int
intlcal_get_skipped_wall_time_option ( IntlCalendar `$cal` ) : int
public getTime ( ) : float
intlcal_get_time ( IntlCalendar `$cal` ) : float
public getTimeZone ( ) : IntlTimeZone
intlcal_get_time_zone ( IntlCalendar `$cal` ) : IntlTimeZone
public getType ( ) : string
intlcal_get_type ( IntlCalendar `$cal` ) : string
public getWeekendTransition ( string `$dayOfWeek` ) : int|false
intlcal_get_weekend_transition ( IntlCalendar `$cal` , string `$dayOfWeek` ) : int|false
public inDaylightTime ( ) : bool
intlcal_in_daylight_time ( IntlCalendar `$cal` ) : bool
public isEquivalentTo ( IntlCalendar `$other` ) : bool
intlcal_is_equivalent_to ( IntlCalendar `$cal` , IntlCalendar `$other` ) : bool
public isLenient ( ) : bool
intlcal_is_lenient ( IntlCalendar `$cal` ) : bool
public isSet ( int `$field` ) : bool
intlcal_is_set ( IntlCalendar `$cal` , int `$field` ) : bool
public isWeekend ([ float `$date` = NULL ] ) : bool
intlcal_is_weekend ( IntlCalendar `$cal` [, float `$date` = NULL ] ) : bool
public roll ( int `$field` , mixed `$amountOrUpOrDown` ) : bool
intlcal_roll ( IntlCalendar `$cal` , int `$field` , mixed `$amountOrUpOrDown` ) : bool
public set ( int `$field` , int `$value` ) : bool
public set ( int `$year` , int `$month` [, int `$dayOfMonth` = NULL [, int `$hour` = NULL [, int `$minute` = NULL [, int `$second` = NULL ]]]] ) : bool
intlcal_set ( IntlCalendar `$cal` , int `$field` , int `$value` ) : bool
intlcal_set ( IntlCalendar `$cal` , int `$year` , int `$month` [, int `$dayOfMonth` = NULL [, int `$hour` = NULL [, int `$minute` = NULL [, int `$second` = NULL ]]]] ) : bool
public setFirstDayOfWeek ( int `$dayOfWeek` ) : bool
intlcal_set_first_day_of_week ( IntlCalendar `$cal` , int `$dayOfWeek` ) : bool
public setLenient ( bool `$isLenient` ) : bool
intlcal_set_lenient ( IntlCalendar `$cal` , bool `$isLenient` ) : bool
public setMinimalDaysInFirstWeek ( int `$minimalDays` ) : bool
intlcal_set_minimal_days_in_first_week ( IntlCalendar `$cal` , int `$minimalDays` ) : bool
public setRepeatedWallTimeOption ( int `$wallTimeOption` ) : bool
intlcal_set_repeated_wall_time_option ( IntlCalendar `$cal` , int `$wallTimeOption` ) : bool
public setSkippedWallTimeOption ( int `$wallTimeOption` ) : bool
intlcal_set_skipped_wall_time_option ( IntlCalendar `$cal` , int `$wallTimeOption` ) : bool
public setTime ( float `$date` ) : bool
intlcal_set_time ( IntlCalendar `$cal` , float `$date` ) : bool
public setTimeZone ( mixed `$timeZone` ) : bool
intlcal_set_time_zone ( IntlCalendar `$cal` , mixed `$timeZone` ) : bool
public toDateTime ( ) : DateTime
intlcal_to_date_time ( IntlCalendar `$cal` ) : DateTime
}

## Predefined Constants

`IntlCalendar::FIELD_ERA`

  Calendar field numerically representing an era, for instance `1` for AD and `0` for BC in the Gregorian/Julian calendars and `235` for the Heisei (平成) era in the Japanese calendar. Not all calendars have more than one era.

`IntlCalendar::FIELD_YEAR`

  Calendar field for the year. This is not unique across eras. If the calendar type has more than one era, generally the minimum value for this field will be `1`.

`IntlCalendar::FIELD_MONTH`

  Calendar field for the month. The month sequence is zero-based, so January (here used to signify the first month of the calendar; this may be called another name, such as Muharram in the Islamic calendar) is represented by `0`, February by `1`, …, December by `11` and, for calendars that have it, the 13th or leap month by `12`.

`IntlCalendar::FIELD_WEEK_OF_YEAR`

  Calendar field for the number of the week of the year. This depends on which day of the week is deemed to start the week and the minimal number of days in a week.

`IntlCalendar::FIELD_WEEK_OF_MONTH`

  Calendar field for the number of the week of the month. This depends on which day of the week is deemed to start the week and the minimal number of days in a week.

`IntlCalendar::FIELD_DATE`

  Calendar field for the day of the month. The same as `IntlCalendar::FIELD_DAY_OF_MONTH`, which has a clearer name.

`IntlCalendar::FIELD_DAY_OF_YEAR`

  Calendar field for the day of the year. For the Gregorian calendar, starts with `1` and ends with `365` or `366`.

`IntlCalendar::FIELD_DAY_OF_WEEK`

  Calendar field for the day of the week. Its values start with `1` (Sunday, see `IntlCalendar::DOW_SUNDAY` and subsequent constants) and the last valid value is 7 (Saturday).

`IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH`

  Given a day of the week (Sunday, Monday, …), this calendar field assigns an ordinal to such a day of the week in a specific month. Thus, if the value of this field is `1` and the value of the day of the week is `2` (Monday), then the set day of the month is the 1st Monday of the month; the maximum value is `5`.

  Additionally, the value `0` and negative values are also allowed. The value `0` encompasses the seven days that occur immediately before the first seven days of a month (which therefore have a ‘day of week in month’ with value `1`). Negative values starts counting from the end of the month – `-1` points to the last occurrence of a day of the week in a month, `-2` to the second last, and so on.

  Unlike `IntlCalendar::FIELD_WEEK_OF_MONTH` and `IntlCalendar::FIELD_WEEK_OF_YEAR`, this value does not depend on IntlCalendar::getFirstDayOfWeek() or on IntlCalendar::getMinimalDaysInFirstWeek(). The first Monday is the first Monday, even if it occurs in a week that belongs to the previous month.

`IntlCalendar::FIELD_AM_PM`

  Calendar field indicating whether a time is before noon (value `0`, AM) or after (`1`). Midnight is AM, noon is PM.

`IntlCalendar::FIELD_HOUR`

  Calendar field for the hour, without specifying whether itʼs in the morning or in the afternoon. Valid values are `0` to `11`.

`IntlCalendar::FIELD_HOUR_OF_DAY`

  Calendar field for the full (24h) hour of the day. Valid values are `0` to `23`.

`IntlCalendar::FIELD_MINUTE`

  Calendar field for the minutes component of the time.

`IntlCalendar::FIELD_SECOND`

  Calendar field for the seconds component of the time.

`IntlCalendar::FIELD_MILLISECOND`

  Calendar field the milliseconds component of the time.

`IntlCalendar::FIELD_ZONE_OFFSET`

  Calendar field indicating the raw offset of the timezone, in milliseconds. The raw offset is the timezone offset, excluding any offset due to daylight saving time.

`IntlCalendar::FIELD_DST_OFFSET`

  Calendar field for the daylight saving time offset of the calendarʼs timezone, in milliseconds, if active for calendarʼs time.

`IntlCalendar::FIELD_YEAR_WOY`

  Calendar field representing the year for week of year purposes.

`IntlCalendar::FIELD_DOW_LOCAL`

  Calendar field for the localized day of the week. This is a value between `1` and `7`, `1` being used for the day of the week that matches the value returned by IntlCalendar::getFirstDayOfWeek().

`IntlCalendar::FIELD_EXTENDED_YEAR`

  Calendar field for a year number representation that is continuous across eras. For the Gregorian calendar, the value of this field matches that of `IntlCalendar::FIELD_YEAR` for AD years; a BC year `y` is represented by `-y + 1`.

`IntlCalendar::FIELD_JULIAN_DAY`

  Calendar field for a modified Julian day number. It is different from a conventional Julian day number in that its transitions occur at local zone midnight rather than at noon UTC. It uniquely identifies a date.

`IntlCalendar::FIELD_MILLISECONDS_IN_DAY`

  Calendar field encompassing the information in `IntlCalendar::FIELD_HOUR_OF_DAY`, `IntlCalendar::FIELD_MINUTE`, `IntlCalendar::FIELD_SECOND` and `IntlCalendar::FIELD_MILLISECOND`. Range is from the `0` to `24 * 3600 * 1000 - 1`. It is not the amount of milliseconds elapsed in the day since on DST transitions it will have discontinuities analog to those of the wall time.

`IntlCalendar::FIELD_IS_LEAP_MONTH`

  Calendar field whose value is `1` for indicating a leap month and `0` otherwise.

`IntlCalendar::FIELD_FIELD_COUNT`

  The total number of fields.

`IntlCalendar::FIELD_DAY_OF_MONTH`

  Alias for `IntlCalendar::FIELD_DATE`.

`IntlCalendar::DOW_SUNDAY`

  Sunday.

`IntlCalendar::DOW_MONDAY`

  Monday.

`IntlCalendar::DOW_TUESDAY`

  Tuesday.

`IntlCalendar::DOW_WEDNESDAY`

  Wednesday.

`IntlCalendar::DOW_THURSDAY`

  Thursday.

`IntlCalendar::DOW_FRIDAY`

  Friday.

`IntlCalendar::DOW_SATURDAY`

  Saturday.

`IntlCalendar::DOW_TYPE_WEEKDAY`

  Output of IntlCalendar::getDayOfWeekType() indicating a day of week is a weekday.

`IntlCalendar::DOW_TYPE_WEEKEND`

  Output of IntlCalendar::getDayOfWeekType() indicating a day of week belongs to the weekend.

`IntlCalendar::DOW_TYPE_WEEKEND_OFFSET`

  Output of IntlCalendar::getDayOfWeekType() indicating the weekend begins during the given day of week.

`IntlCalendar::DOW_TYPE_WEEKEND_CEASE`

  Output of IntlCalendar::getDayOfWeekType() indicating the weekend ends during the given day of week.

`IntlCalendar::WALLTIME_FIRST`

  Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the same instant as wall times with one hour less and of IntlCalendar::getRepeatedWallTimeOption() indicating the wall times in the repeated range should refer to the instant of the first occurrence of such wall time.

`IntlCalendar::WALLTIME_LAST`

  Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the same instant as wall times with one hour after and of IntlCalendar::getRepeatedWallTimeOption() indicating the wall times in the repeated range should refer to the instant of the second occurrence of such wall time.

`IntlCalendar::WALLTIME_NEXT_VALID`

  Output of IntlCalendar::getSkippedWallTimeOption() indicating that wall times in the skipped range should refer to the instant when the daylight saving time transition occurs (begins).

## Table of Contents

- IntlCalendar::add — Add a (signed) amount of time to a field
- IntlCalendar::after — Whether this objectʼs time is after that of the passed object
- IntlCalendar::before — Whether this objectʼs time is before that of the passed object
- IntlCalendar::clear — Clear a field or all fields
- IntlCalendar::__construct — Private constructor for disallowing instantiation
- IntlCalendar::createInstance — Create a new IntlCalendar
- IntlCalendar::equals — Compare time of two IntlCalendar objects for equality
- IntlCalendar::fieldDifference — Calculate difference between given time and this objectʼs time
- IntlCalendar::fromDateTime — Create an IntlCalendar from a DateTime object or string
- IntlCalendar::get — Get the value for a field
- IntlCalendar::getActualMaximum — The maximum value for a field, considering the objectʼs current time
- IntlCalendar::getActualMinimum — The minimum value for a field, considering the objectʼs current time
- IntlCalendar::getAvailableLocales — Get array of locales for which there is data
- IntlCalendar::getDayOfWeekType — Tell whether a day is a weekday, weekend or a day that has a transition between the two
- IntlCalendar::getErrorCode — Get last error code on the object
- IntlCalendar::getErrorMessage — Get last error message on the object
- IntlCalendar::getFirstDayOfWeek — Get the first day of the week for the calendarʼs locale
- IntlCalendar::getGreatestMinimum — Get the largest local minimum value for a field
- IntlCalendar::getKeywordValuesForLocale — Get set of locale keyword values
- IntlCalendar::getLeastMaximum — Get the smallest local maximum for a field
- IntlCalendar::getLocale — Get the locale associated with the object
- IntlCalendar::getMaximum — Get the global maximum value for a field
- IntlCalendar::getMinimalDaysInFirstWeek — Get minimal number of days the first week in a year or month can have
- IntlCalendar::getMinimum — Get the global minimum value for a field
- IntlCalendar::getNow — Get number representing the current time
- IntlCalendar::getRepeatedWallTimeOption — Get behavior for handling repeating wall time
- IntlCalendar::getSkippedWallTimeOption — Get behavior for handling skipped wall time
- IntlCalendar::getTime — Get time currently represented by the object
- IntlCalendar::getTimeZone — Get the objectʼs timezone
- IntlCalendar::getType — Get the calendar type
- IntlCalendar::getWeekendTransition — Get time of the day at which weekend begins or ends
- IntlCalendar::inDaylightTime — Whether the objectʼs time is in Daylight Savings Time
- IntlCalendar::isEquivalentTo — Whether another calendar is equal but for a different time
- IntlCalendar::isLenient — Whether date/time interpretation is in lenient mode
- IntlCalendar::isSet — Whether a field is set
- IntlCalendar::isWeekend — Whether a certain date/time is in the weekend
- IntlCalendar::roll — Add value to field without carrying into more significant fields
- IntlCalendar::set — Set a time field or several common fields at once
- IntlCalendar::setFirstDayOfWeek — Set the day on which the week is deemed to start
- IntlCalendar::setLenient — Set whether date/time interpretation is to be lenient
- IntlCalendar::setMinimalDaysInFirstWeek — Set minimal number of days the first week in a year or month can have
- IntlCalendar::setRepeatedWallTimeOption — Set behavior for handling repeating wall times at negative timezone offset transitions
- IntlCalendar::setSkippedWallTimeOption — Set behavior for handling skipped wall times at positive timezone offset transitions
- IntlCalendar::setTime — Set the calendar time in milliseconds since the epoch
- IntlCalendar::setTimeZone — Set the timezone used by this calendar
- IntlCalendar::toDateTime — Convert an IntlCalendar into a DateTime object