PHP 8.4.2 Released!

La classe IntlCalendar

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

Introduction

Synopsis de la classe

class IntlCalendar {
/* Constantes */
public const int FIELD_ERA;
public const int FIELD_YEAR;
public const int FIELD_MONTH;
public const int FIELD_WEEK_OF_YEAR;
public const int FIELD_WEEK_OF_MONTH;
public const int FIELD_DATE;
public const int FIELD_DAY_OF_YEAR;
public const int FIELD_DAY_OF_WEEK;
public const int FIELD_AM_PM;
public const int FIELD_HOUR;
public const int FIELD_HOUR_OF_DAY;
public const int FIELD_MINUTE;
public const int FIELD_SECOND;
public const int FIELD_MILLISECOND;
public const int FIELD_ZONE_OFFSET;
public const int FIELD_DST_OFFSET;
public const int FIELD_YEAR_WOY;
public const int FIELD_DOW_LOCAL;
public const int FIELD_EXTENDED_YEAR;
public const int FIELD_JULIAN_DAY;
public const int FIELD_IS_LEAP_MONTH;
public const int FIELD_FIELD_COUNT;
public const int FIELD_DAY_OF_MONTH;
public const int DOW_SUNDAY;
public const int DOW_MONDAY;
public const int DOW_TUESDAY;
public const int DOW_WEDNESDAY;
public const int DOW_THURSDAY;
public const int DOW_FRIDAY;
public const int DOW_SATURDAY;
public const int DOW_TYPE_WEEKDAY;
public const int DOW_TYPE_WEEKEND;
public const int WALLTIME_FIRST;
public const int WALLTIME_LAST;
public const int WALLTIME_NEXT_VALID;
/* Méthodes */
private __construct()
public add(int $field, int $value): bool
public after(IntlCalendar $other): bool
public before(IntlCalendar $other): bool
public clear(?int $field = null): true
public equals(IntlCalendar $other): bool
public fieldDifference(float $timestamp, int $field): int|false
public static fromDateTime(DateTime|string $datetime, ?string $locale = null): ?IntlCalendar
public get(int $field): int|false
public getActualMaximum(int $field): int|false
public getActualMinimum(int $field): int|false
public static getAvailableLocales(): array
public getDayOfWeekType(int $dayOfWeek): int|false
public static getKeywordValuesForLocale(string $keyword, string $locale, bool $onlyCommon): IntlIterator|false
public getLeastMaximum(int $field): int|false
public getLocale(int $type): string|false
public getMaximum(int $field): int|false
public getMinimum(int $field): int|false
public static getNow(): float
public getTime(): float|false
public getType(): string
public getWeekendTransition(int $dayOfWeek): int|false
public isLenient(): bool
public isSet(int $field): bool
public isWeekend(?float $timestamp = null): bool
public roll(int $field, int|bool $value): bool
public set(int $field, int $value): true
public set(
    int $year,
    int $month,
    int $dayOfMonth = NULL,
    int $hour = NULL,
    int $minute = NULL,
    int $second = NULL
): true
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): true
public setLenient(bool $lenient): true
public setTime(float $timestamp): bool
}

Constantes pré-définies

IntlCalendar::FIELD_ERA int

Le champ de calendrier numériquement représentant une ère, par exemple 1 pour AD et 0 pour BC dans les calendriers grégorien/julien et 235 pour l'ère Heisei (平成) dans le calendrier japonais. Tous les calendriers n'ont pas plus d'une ère.

IntlCalendar::FIELD_YEAR int

Le champ de calendrier pour l'année. Ceci n'est pas unique à travers les ères. Si le type de calendrier a plus d'une ère, généralement la valeur minimale pour ce champ sera 1.

IntlCalendar::FIELD_MONTH int

Le champ de calendrier pour le mois. La séquence des mois commence à zéro, donc janvier (ici utilisé pour signifier le premier mois du calendrier; cela peut être appelé un autre nom, tel que Muharram dans le calendrier islamique) est représenté par 0, février par 1, …, décembre par 11 et, pour les calendriers qui l'ont, le 13ème ou mois bis par 12.

IntlCalendar::FIELD_WEEK_OF_YEAR int

Le champ de calendrier pour le numéro de la semaine de l'année. Ceci dépend du jour de la semaine qui est considéré comme le début de la semaine et du nombre minimal de jours dans une semaine.

IntlCalendar::FIELD_WEEK_OF_MONTH int

Le champ de calendrier pour le numéro de la semaine du mois. Ceci dépend du jour de la semaine qui est considéré comme le début de la semaine et du nombre minimal de jours dans une semaine.

IntlCalendar::FIELD_DATE int

Le champ de calendrier pour le jour du mois. Identique à IntlCalendar::FIELD_DAY_OF_MONTH, qui a un nom plus clair.

IntlCalendar::FIELD_DAY_OF_YEAR int

Le champ de calendrier pour le jour de l'année. Pour le calendrier grégorien, commence par 1 et se termine par 365 ou 366.

IntlCalendar::FIELD_DAY_OF_WEEK int

Le champ de calendrier pour le jour de la semaine. Ses valeurs commencent par 1 (dimanche, voir IntlCalendar::DOW_SUNDAY et les constantes suivantes) et la dernière valeur valide est 7 (samedi).

IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH int

Donner un jour de la semaine (dimanche, lundi, …), ce champ de calendrier attribue un ordinal à un tel jour de la semaine dans un mois spécifique. Ainsi, si la valeur de ce champ est 1 et la valeur du jour de la semaine est 2 (lundi), alors le jour défini du mois est le premier lundi du mois; la valeur maximale est 5.

En plus de cela, la valeur 0 et les valeurs négatives sont également autorisées. La valeur 0 englobe les sept jours qui se produisent immédiatement avant les sept premiers jours d'un mois (qui ont donc un « jour de la semaine dans le mois » avec la valeur 1). Les valeurs négatives commencent à compter à partir de la fin du mois - -1 pointe vers la dernière occurrence d'un jour de la semaine dans un mois, -2 vers l'avant-dernier, et ainsi de suite.

A la différence de IntlCalendar::FIELD_WEEK_OF_MONTH et IntlCalendar::FIELD_WEEK_OF_YEAR, cette valeur ne dépend pas de IntlCalendar::getFirstDayOfWeek() ou de IntlCalendar::getMinimalDaysInFirstWeek(). Le premier lundi est le premier lundi, même s'il se trouve dans une semaine qui appartient au mois précédent.

IntlCalendar::FIELD_AM_PM int

Le champ de calendrier indiquant si un temps est avant midi (valeur 0, AM) ou après (1, PM). Minuit est AM, midi est PM.

IntlCalendar::FIELD_HOUR int

Le champ de calendrier pour l'heure, sans spécifier si c'est le matin ou l'après-midi. Les valeurs valides sont de 0 à 11.

IntlCalendar::FIELD_HOUR_OF_DAY int

Le champ de calendrier pour l'heure complète (24h) du jour. Les valeurs valides sont de 0 à 23.

IntlCalendar::FIELD_MINUTE int

Le champ de calendrier pour la composante minutes de l'heure.

IntlCalendar::FIELD_SECOND int

Le champ de calendrier pour la composante secondes de l'heure.

IntlCalendar::FIELD_MILLISECOND int

Le champ de calendrier pour la composante millisecondes de l'heure.

IntlCalendar::FIELD_ZONE_OFFSET int

Le champ de calendrier indiquant le décalage brut du fuseau horaire, en millisecondes. Le décalage brut est le décalage du fuseau horaire, excluant tout décalage dû à l'heure d'été.

IntlCalendar::FIELD_DST_OFFSET int

Le champ de calendrier pour le décalage de l'heure d'été du fuseau horaire du calendrier, en millisecondes, si actif pour le fuseau horaire

IntlCalendar::FIELD_YEAR_WOY int

Le champ de calendrier représentant l'année pour les besoins de la semaine de l'année.

IntlCalendar::FIELD_DOW_LOCAL int

Le champ de calendrier pour le jour localisé de la semaine. Ceci est une valeur entre 1 et 7, 1 étant utilisé pour le jour de la semaine qui correspond à la valeur retournée par IntlCalendar::getFirstDayOfWeek().

IntlCalendar::FIELD_EXTENDED_YEAR int

Le champ de calendrier pour une représentation numérique de l'année qui est continue à travers les ères. Pour le calendrier grégorien, la valeur de ce champ correspond à celle de IntlCalendar::FIELD_YEAR pour les années AD; une année BC y est représentée par -y + 1.

IntlCalendar::FIELD_JULIAN_DAY int

Le champ de calendrier pour un nombre de jours julien modifié. Il est différent d'un nombre de jours julien conventionnel en ce que ses transitions se produisent à minuit du fuseau horaire local plutôt qu'à midi UTC. Il identifie de manière unique une date.

IntlCalendar::FIELD_MILLISECONDS_IN_DAY int

Le champ de calendrier englobant les informations dans IntlCalendar::FIELD_HOUR_OF_DAY, IntlCalendar::FIELD_MINUTE, IntlCalendar::FIELD_SECOND et IntlCalendar::FIELD_MILLISECOND. La plage est de 0 to 24 * 3600 * 1000 - 1. Ce n'est pas le nombre de millisecondes écoulées dans la journée, car lors des transitions DST il aura des discontinuités analogues à celles de l'heure locale.

IntlCalendar::FIELD_IS_LEAP_MONTH int

Le champ de calendrier dont la valeur est 1 pour indiquer un mois bisextile et 0 sinon.

IntlCalendar::FIELD_FIELD_COUNT int

Le nombre total de champs.

IntlCalendar::FIELD_DAY_OF_MONTH int

Un alias de IntlCalendar::FIELD_DATE.

IntlCalendar::DOW_SUNDAY int

Dimanche.

IntlCalendar::DOW_MONDAY int

Lundi.

IntlCalendar::DOW_TUESDAY int

Mardi.

IntlCalendar::DOW_WEDNESDAY int

Mercredi.

IntlCalendar::DOW_THURSDAY int

Jeudi.

IntlCalendar::DOW_FRIDAY int

Vendredi.

IntlCalendar::DOW_SATURDAY int

Samedi.

IntlCalendar::DOW_TYPE_WEEKDAY int

La sortie de IntlCalendar::getDayOfWeekType() indiquant qu'un jour de la semaine appartient à la semaine.

IntlCalendar::DOW_TYPE_WEEKEND int

La sortie de IntlCalendar::getDayOfWeekType() indiquant qu'un jour de la semaine appartient au week-end.

IntlCalendar::DOW_TYPE_WEEKEND_OFFSET int

La sortie de IntlCalendar::getDayOfWeekType() indiquant que le week-end commence pendant le jour de la semaine donné.

IntlCalendar::DOW_TYPE_WEEKEND_CEASE int

La sortie de IntlCalendar::getDayOfWeekType() indiquant que le week-end se termine pendant le jour de la semaine donné.

IntlCalendar::WALLTIME_FIRST int

La sortie de IntlCalendar::getSkippedWallTimeOption() indiquant que les heures murales dans la plage sautée devraient se référer au même instant que les heures murales avec une heure de moins et de IntlCalendar::getRepeatedWallTimeOption() indiquant que les heures murales dans la plage répétée devraient se référer à l'instant de la première occurrence de cette heure murale.

IntlCalendar::WALLTIME_LAST int

La sortie de IntlCalendar::getSkippedWallTimeOption() indiquant que les heures murales dans la plage sautée devraient se référer au même instant que les heures murales avec une heure de plus et de IntlCalendar::getRepeatedWallTimeOption() indiquant que les heures murales dans la plage répétée devraient se référer à l'instant de la deuxième occurrence de cette heure murale.

IntlCalendar::WALLTIME_NEXT_VALID int

La sortie de IntlCalendar::getRepeatedWallTimeOption() indiquant que les heures murales dans la plage répétée devraient se référer à l'instant lorsque la transition de l'heure d'été arrive (débute).

Historique

Version Description
8.4.0 Les constantes de classe sont désormais typées.

Sommaire

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