# La clase IntlCalendar

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

## Introducción

## Sinopsis de la Clase

class IntlCalendar {
/* Constantes */
const integer FIELD_ERA = 0;
const integer FIELD_YEAR = 1;
const integer FIELD_MONTH = 2;
const integer FIELD_WEEK_OF_YEAR = 3;
const integer FIELD_WEEK_OF_MONTH = 4;
const integer FIELD_DATE = 5;
const integer FIELD_DAY_OF_YEAR = 6;
const integer FIELD_DAY_OF_WEEK = 7;
const integer FIELD_DAY_OF_WEEK_IN_MONTH = 8;
const integer FIELD_AM_PM = 9;
const integer FIELD_HOUR = 10;
const integer FIELD_HOUR_OF_DAY = 11;
const integer FIELD_MINUTE = 12;
const integer FIELD_SECOND = 13;
const integer FIELD_MILLISECOND = 14;
const integer FIELD_ZONE_OFFSET = 15;
const integer FIELD_DST_OFFSET = 16;
const integer FIELD_YEAR_WOY = 17;
const integer FIELD_DOW_LOCAL = 18;
const integer FIELD_EXTENDED_YEAR = 19;
const integer FIELD_JULIAN_DAY = 20;
const integer FIELD_MILLISECONDS_IN_DAY = 21;
const integer FIELD_IS_LEAP_MONTH = 22;
const integer FIELD_FIELD_COUNT = 23;
const integer FIELD_DAY_OF_MONTH = 5;
const integer DOW_SUNDAY = 1;
const integer DOW_MONDAY = 2;
const integer DOW_TUESDAY = 3;
const integer DOW_WEDNESDAY = 4;
const integer DOW_THURSDAY = 5;
const integer DOW_FRIDAY = 6;
const integer DOW_SATURDAY = 7;
const integer DOW_TYPE_WEEKDAY = 0;
const integer DOW_TYPE_WEEKEND = 1;
const integer DOW_TYPE_WEEKEND_OFFSET = 2;
const integer DOW_TYPE_WEEKEND_CEASE = 3;
const integer WALLTIME_FIRST = 1;
const integer WALLTIME_LAST = 0;
const integer WALLTIME_NEXT_VALID = 2;
/* Métodos */
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
intlcal_field_difference(IntlCalendar `$cal`, float `$when`, int `$field`): int
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
intlcal_get_actual_maximum(IntlCalendar `$cal`, int `$field`): int
public getActualMinimum(int `$field`): int
intlcal_get_actual_minimum(IntlCalendar `$cal`, int `$field`): int
public static getAvailableLocales(): array
intlcal_get_available_locales(): array
public getDayOfWeekType(int `$dayOfWeek`): int
intlcal_get_day_of_week_type(IntlCalendar `$cal`, int `$dayOfWeek`): int
public getErrorCode(): int
public getErrorMessage(): string
public getFirstDayOfWeek(): int
intlcal_get_first_day_of_week(IntlCalendar `$cal`): int
public getGreatestMinimum(int `$field`): int
intlcal_get_greatest_minimum(IntlCalendar `$cal`, int `$field`): int
public static getKeywordValuesForLocale(string `$key`, string `$locale`, boolean `$commonlyUsed`): Iterator
intlcal_get_keyword_values_for_locale(string `$key`, string `$locale`, boolean `$commonlyUsed`): Iterator
public getLeastMaximum(int `$field`): int
intlcal_get_least_maximum(IntlCalendar `$cal`, int `$field`): int
public getLocale(int `$localeType`): string
intlcal_get_locale(IntlCalendar `$cal`, int `$localeType`): string
public getMaximum(int `$field`): int
intlcal_get_maximum(IntlCalendar `$cal`, int `$field`): int
public getMinimalDaysInFirstWeek(): int
intlcal_get_minimal_days_in_first_week(IntlCalendar `$cal`): int
public getMinimum(int `$field`): int
intlcal_get_minimum(IntlCalendar `$cal`, int `$field`): int
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
intlcal_get_weekend_transition(IntlCalendar `$cal`, string `$dayOfWeek`): int
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 setDate(int `$year`, int `$month`, int `$dayOfMonth`): void
public setDateTime(
int `$year`,
int `$month`,
int `$dayOfMonth`,
int `$hour`,
int `$minute`,
?int `$second` = `null`
): void
public setFirstDayOfWeek(int `$dayOfWeek`): bool
intlcal_set_first_day_of_week(IntlCalendar `$cal`, int `$dayOfWeek`): bool
public setLenient(string `$isLenient`): ReturnType
intlcal_set_lenient(IntlCalendar `$cal`, string `$isLenient`): ReturnType
public setMinimalDaysInFirstWeek(int `$minimalDays`): bool
intlcal_get_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
}

## Constantes predefinidas

`IntlCalendar::FIELD_ERA`

  Campo de calendario que representa numéricamente una era, por ejemplo `1` para DC y `0` para AC en los calendarios Gregoriano/Juliano, y `235` para la era Heisei (平成) en el calendario japonés. No todos los calendarios tienen más de una era.

`IntlCalendar::FIELD_YEAR`

  Campo de calendario para el año. No es único a lo largo de las eras. Si el tipo de calendario tiene más de una era, generalmente el valor mínimo para este campo será `1`.

`IntlCalendar::FIELD_MONTH`

  Campo de calendario para el mes. La secuecia de meses está basada en cero, por lo que Enero (aquí suele significar el primer mes del calendario; este podría llamarse de otra manera, como Muharram en el calendario islámico) se representa por `0`, Febrero por `1`, …, Diciembre por `11` y, para calendarios que lo tengan, el 13º o mes bisiesto por `12`.

`IntlCalendar::FIELD_WEEK_OF_YEAR`

  Campo de calendario para el número de la semana del año. Depende de qué día de la semana se considera que inicia la semana y el número mínimo de días de una semana.

`IntlCalendar::FIELD_WEEK_OF_MONTH`

  Campo de calendario para el número de la semana del mes. Depende de qué día de la semana se considra que inicia la semana y el número mínimo de días de una semana.

`IntlCalendar::FIELD_DATE`

  Campo de calendario para el día del mes. Lo mismo que `IntlCalendar::FIELD_DAY_OF_MONTH`, el cual tiene un nombre más claro.

`IntlCalendar::FIELD_DAY_OF_YEAR`

  Campo de calendario para el día del año. Para el calendario Gregoriano, comienza con `1` y finaliza con `365` o `366`.

`IntlCalendar::FIELD_DAY_OF_WEEK`

  Campo de calendario para el día de la semana. Su valor empiaza con `1` (Domingo, véase `IntlCalendar::DOW_SUNDAY` y constantes subsiguientes) y el último valor válido es 7 (Sábado).

`IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH`

  Dado un día de la semana (Domingo, Lunes, …), este campo de calendario asigna un ordinal para tal día de la semana de un mes específico. Así, si el valor de este campo es `1` y el valor del día de la semana es `2` (Lunes), el día establecido del mes es el 1er lunes del mes; el valor máximo es `5`.

  Además, el valor `0` y los valores negativos también están permitidos. El valor `0` abarca los siete días que acontecen inmediatamente antes de los primeros siete días de un mes (el cual tiene por lo tanto un ‘día de la semana del mes’ con valor `1`). Los valores negativos inician la cuenta desde el final del mes – `-1` apunta a la última aparición de un día de la semana en un mes, `-2` al penúltimo, etc.

  A diferencia de `IntlCalendar::FIELD_WEEK_OF_MONTH` y `IntlCalendar::FIELD_WEEK_OF_YEAR`, este valor no depende de IntlCalendar::getFirstDayOfWeek() o IntlCalendar::getMinimalDaysInFirstWeek(). El primer lunes es el primer lunes, incluso si sucede en una semana que pertenece al mes anterior.

`IntlCalendar::FIELD_AM_PM`

  Campo de calendario que indica si una hora es anterior al mediodía (valor `0`, AM) o posterior (`1`). Medianoche es AM, mediodía es PM.

`IntlCalendar::FIELD_HOUR`

  Campo de calendario para la hora, sin especificar si es por la mañana o por la tarde. Los valores válidos son de `0` a `11`.

`IntlCalendar::FIELD_HOUR_OF_DAY`

  Campo de calendario para la hora completa (24h) de un día. Los valores válidos son de `0` a `23`.

`IntlCalendar::FIELD_MINUTE`

  Campo de calendario para el componente minutos de la hora.

`IntlCalendar::FIELD_SECOND`

  Campo de calendario para el componente segundos de la hora.

`IntlCalendar::FIELD_MILLISECOND`

  Campo de calendario para el componente milisegundos de la hora.

`IntlCalendar::FIELD_ZONE_OFFSET`

  Campo de calendario que indica el índice puro de la zona horaria, en milisegundos. El índice puro es el índice de la zona horaria, excluyendo cualquier índice debido a las horas de horario de verano.

`IntlCalendar::FIELD_DST_OFFSET`

  Campo de calendario para el índice del horario de verano de la zona horaria del calendario, en milisegundos, si está activo para la hora del calendario.

`IntlCalendar::FIELD_YEAR_WOY`

  Campo de calendario que representa el año para propósitos de semana del año.

`IntlCalendar::FIELD_DOW_LOCAL`

  Campo de calendario para el día localizado de la semana. Es un valor entre `1` y `7`, siendo `1` usado para el día de la semana que coincide con el valor representado por IntlCalendar::getFirstDayOfWeek().

`IntlCalendar::FIELD_EXTENDED_YEAR`

  Campo de calendario para una representación numérica del año que es continua a lo largo de las eras. Para el calendario Gregoriano, el valor de este campo coincide con el de `IntlCalendar::FIELD_YEAR` para años DC; un año AC `a` se reprenta por `-a + 1`.

`IntlCalendar::FIELD_JULIAN_DAY`

  Campo de calendario para un número de día juliano modificado. Es diferente de un número de día juliano convencional en que su transción sucede a medianoche de la zona local en vez de a mediodía en UTC. Identifica una fecha de manera única.

`IntlCalendar::FIELD_MILLISECONDS_IN_DAY`

  Campo de calendario que abarca la información de `IntlCalendar::FIELD_HOUR_OF_DAY`, `IntlCalendar::FIELD_MINUTE`, `IntlCalendar::FIELD_SECOND` y `IntlCalendar::FIELD_MILLISECOND`. El rango es desde `0` a `24 * 3600 * 1000 - 1`. No es la cantidad de milisegundos transcurridos del día, ya que las transiciones DST tendrán discontinuidades análogas a aquellas de la hora real ('wall time').

`IntlCalendar::FIELD_IS_LEAP_MONTH`

  Campo de calendario cuyo valor es `1` para indicar un mes bisiesto, y `0` para lo contrario.

`IntlCalendar::FIELD_FIELD_COUNT`

  El número total de campos.

`IntlCalendar::FIELD_DAY_OF_MONTH`

  Alias de `IntlCalendar::FIELD_DATE`.

`IntlCalendar::DOW_SUNDAY`

  Domingo.

`IntlCalendar::DOW_MONDAY`

  Lunes.

`IntlCalendar::DOW_TUESDAY`

  Martes.

`IntlCalendar::DOW_WEDNESDAY`

  Miércoles.

`IntlCalendar::DOW_THURSDAY`

  Jueves.

`IntlCalendar::DOW_FRIDAY`

  Viernes.

`IntlCalendar::DOW_SATURDAY`

  Sábado.

`IntlCalendar::DOW_TYPE_WEEKDAY`

  Salida generada por IntlCalendar::getDayOfWeekType() que indica que un día de la semana es un día entresemana.

`IntlCalendar::DOW_TYPE_WEEKEND`

  Salida generada por IntlCalendar::getDayOfWeekType() que indica que un día de la semana pertenece al fin de semana.

`IntlCalendar::DOW_TYPE_WEEKEND_OFFSET`

  Salida generada por IntlCalendar::getDayOfWeekType() que indica que el fin de semana comienza durante un día dado de una semana.

`IntlCalendar::DOW_TYPE_WEEKEND_CEASE`

  Salida generada por IntlCalendar::getDayOfWeekType() que indica que el fin de semana finaliza durante un día dado de la semana.

`IntlCalendar::WALLTIME_FIRST`

  Salida generada por IntlCalendar::getSkippedWallTimeOption() que indica que las horas reales del rango omitido deberían hacer referencia al mismo instante que las horas reales con una hora menos, y la generada por IntlCalendar::getRepeatedWallTimeOption() que indica que las horas reales del rango repetido deberían hacer referencia al instante de la primera aparición de tal hora real.

`IntlCalendar::WALLTIME_LAST`

  Salida generada por IntlCalendar::getSkippedWallTimeOption() que indica que los "wall times" del rango omitido deberían hacer referencia al mismo instante que los "wall times" con una hora después, y la generada por IntlCalendar::getRepeatedWallTimeOption() que indica que las horas reales del rango repetido deberían hacer referencia al instante de la segunda aparición de tal hora real.

`IntlCalendar::WALLTIME_NEXT_VALID`

  Salida generada por IntlCalendar::getSkippedWallTimeOption() que indica que las horea reales del rango omitido deberían hacer referencia al instante cuando sucede (comienza) la transición del horario de verano.

## Tabla de contenidos

- IntlCalendar::add — Añadir una candidad (con signo) de tiempo al campo
- IntlCalendar::after — Indica si el instante de este objeto es posterior al del proporcionado
- IntlCalendar::before — Indica si el instante de este objeto es anterior al del proporcionado
- IntlCalendar::clear — Limpiar uno o todos los campos
- IntlCalendar::__construct — Constructor privado para no permitir la creación de instancias
- IntlCalendar::createInstance — Crear un nuevo IntlCalendar
- IntlCalendar::equals — Comparar el instante de dos objetos IntlCalendar
- IntlCalendar::fieldDifference — Calcular la diferencia entre el instante dado y el de este objeto
- IntlCalendar::fromDateTime — Crear un IntlCalendar desde un objeto DateTime o tring
- IntlCalendar::get — Obtiene el valor de un campo
- IntlCalendar::getActualMaximum — El valor máximo de un campo, considerando el instante actual del objeto
- IntlCalendar::getActualMinimum — El valor mínimo de un campo, considerando el instante actual del objeto
- IntlCalendar::getAvailableLocales — Obtener un array con las zonas para las que existen datos
- IntlCalendar::getDayOfWeekType — Inidcar si un día es un día de entresemana, del fin de semana o un día de transición entre ambos
- IntlCalendar::getErrorCode — Obtener el código de error del objeto
- IntlCalendar::getErrorMessage — Obtener el últime mensaje de error del objeto
- IntlCalendar::getFirstDayOfWeek — Obtener el primer día de la semana de la región del calendario
- IntlCalendar::getGreatestMinimum — Obtener el valor mínimo local más grande de un campo
- IntlCalendar::getKeywordValuesForLocale — Obtener un conjunto de valores de palabras clave de zonas
- IntlCalendar::getLeastMaximum — Obtener el máximo local más pequeño de un campo
- IntlCalendar::getLocale — Obtener la configuración regional asociada al objeto
- IntlCalendar::getMaximum — Obtener el valor máximo global de un campo
- IntlCalendar::getMinimalDaysInFirstWeek — Obtener el número mínimo de días que puede tener la primera semana de un año o mes
- IntlCalendar::getMinimum — Obtener el valor mínimo de un campo
- IntlCalendar::getNow — Obtener el número que representa el instante actual
- IntlCalendar::getRepeatedWallTimeOption — Obtener el comportamiento para tratar horas repetidas
- IntlCalendar::getSkippedWallTimeOption — Obtener el comportamiento para tratar horas omitidas
- IntlCalendar::getTime — Obtiene el tiempo representado por el objeto
- IntlCalendar::getTimeZone — Obtener la zona horaria del objeto
- IntlCalendar::getType — Obtener el tipo de calendario
- IntlCalendar::getWeekendTransition — Obtener el instante del día en la que comienza o termina el fin de semana
- IntlCalendar::inDaylightTime — Indicar si el instante del objeto está en el horario de verano
- IntlCalendar::isEquivalentTo — Indicar si otro calendario es igual pero para un instante diferente
- IntlCalendar::isLenient — Indicar si la interpretación de una fecha/hora está en modo tolerante
- IntlCalendar::isSet — Determina si un campo está definido
- IntlCalendar::isWeekend — Determina si una cierta fecha es fin de semana
- IntlCalendar::roll — Añadir un valor a un campo si acarrear más campos significativos
- IntlCalendar::set — Establecer un campo de instante o varios campos en común de una vez
- IntlCalendar::setDate — Set a date fields
- IntlCalendar::setDateTime — Set a date and time fields
- IntlCalendar::setFirstDayOfWeek — Establecer el día en el que se estima que empieza la semana
- IntlCalendar::setLenient — Establecer si la interpretación de la fecha/hora es tolerante
- IntlCalendar::setMinimalDaysInFirstWeek — Establecer el número de días mínimo que puede tener la primera semana de un año o mes
- IntlCalendar::setRepeatedWallTimeOption — Establecer el comportamiento para tratar horas repetidas en transiciones negativas de índices de zonas horarias
- IntlCalendar::setSkippedWallTimeOption — Establecer el comportamiento para tratar horas omitidas en transiciones positivas de índices de zonas horarias
- IntlCalendar::setTime — Establecer el momento del calendario en milisegundos desde la época
- IntlCalendar::setTimeZone — Establecer la zona horaria usada por este calendario
- IntlCalendar::toDateTime — Convertir un objeto IntlCalendar a un objeto DateTime