PHP 8.4.1 Released!

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_DATE = 5;
const integer FIELD_AM_PM = 9;
const integer FIELD_HOUR = 10;
const integer FIELD_MINUTE = 12;
const integer FIELD_SECOND = 13;
const integer DOW_SUNDAY = 1;
const integer DOW_MONDAY = 2;
const integer DOW_TUESDAY = 3;
const integer DOW_FRIDAY = 6;
/* 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
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
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
intlcal_get_repeated_wall_time_option(IntlCalendar $cal): int
intlcal_get_skipped_wall_time_option(IntlCalendar $cal): int
public getTime(): float
intlcal_get_time(IntlCalendar $cal): float
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
intlcal_in_daylight_time(IntlCalendar $cal): 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
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

add a note

User Contributed Notes 1 note

up
1
Doug
1 year ago
Example obtaining a week and its boundaries (for building a calendar view):

<?php
$date
= new DateTime('now');
$locale = 'en_US';

$thisWeek = IntlCalendar::fromDateTime($date, $locale);
$thisWeek->set(IntlCalendar::FIELD_DAY_OF_WEEK, $thisWeek->getFirstDayOfWeek());
// $thisWeek now points to the first day of the week
$weekStart = $thisWeek->toDateTime();

$daysToAdvance = $thisWeek->getMaximum(IntlCalendar::FIELD_DAY_OF_WEEK) - 1;
// Maximum number of days in a week minus 1 gets you to the last day
$weekEnd = $weekStart->modify("+{$daysToAdvance} days");

$previousWeek = IntlCalendar::fromDateTime($date, $locale);
$previousWeek->add(IntlCalendar::FIELD_WEEK_OF_YEAR, -1);
$previousWeek = $previousWeek->toDateTime();

$nextWeek = IntlCalendar::fromDateTime($date, $locale);
$nextWeek->add(IntlCalendar::FIELD_WEEK_OF_YEAR, 1);
$nextWeek = $nextWeek->toDateTime();
?>
To Top