PHP 8.4.2 Released!

A classe IntlCalendar

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

Introdução

Resumo da 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étodos */
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 predefinidas

IntlCalendar::FIELD_ERA int

Campo de calendário que representa uma era numericamente, por exemplo 1 para DC e 0 para AC nos calendários gregorianos/julianos e 235 para a era Heisei (平成) no calendário japonês. Nem todos os calendários têm mais de uma era.

IntlCalendar::FIELD_YEAR int

Campo de calendário para o ano. Isto não é único através das eras. Se o tipo do calendário tem mais que uma era, geralmente o valor mínimo para este campo será 1.

IntlCalendar::FIELD_MONTH int

Campo de calendário para o mês. A sequência de meses é baseada em zero, portanto janeiro (aqui usado com o significado do primeiro mês do calendário; mas pode ser chamado outro nome, como Moarrão no calendário islâmico) é representado por 0, fevereiro por 1, …, dezembro por 11 e, para calendários que o têm, o 13º ou mês adicional por 12.

IntlCalendar::FIELD_WEEK_OF_YEAR int

Campo de calendário para o número da semana no ano. Isto depende de que dia da semana é definido para começar a semana e o número mínimo de dias em uma semana.

IntlCalendar::FIELD_WEEK_OF_MONTH int

Campo de calendário para o número da semana no mês. Isto depende de que dia da semana é definido para começar a semana e o número mínimo de dias em uma semana.

IntlCalendar::FIELD_DATE int

Campo de calendário para o dia do mês. O mesmo que IntlCalendar::FIELD_DAY_OF_MONTH, que tem um nome mais claro.

IntlCalendar::FIELD_DAY_OF_YEAR int

Campo de calendário para o dia no ano. Para o calendário gregoriano, começa com 1 e termina com 365 ou 366.

IntlCalendar::FIELD_DAY_OF_WEEK int

Campo de calendário para o dia da semana. Seus valores começam com 1 (domingo, consulte IntlCalendar::DOW_SUNDAY e constantes subsequentes) e o último valor válido é 7 (sábado).

IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH int

Dado um dia da semana (domingo, segunda-feira, …), este campo de calendário atribui um ordinal ao dia da semana em um mês específico. Portanto, se o valor deste campo for 1 e o valor do dia da semana for 2 (segunda-feira), o dia do mês será a 1ª segunda-feira do mês; o valor máximo é 5.

Adicionalmente, o valor 0 e números negativos também são permitidos. O valor 0 abrange os sete dias que ocorrem imediatamente antes dos primeiros sete dias de um mês (que por sua vez têm o ‘dia da semana no mês’ com valor 1). Valores negativos começam a contagem do final do mês – -1 aponta para a última ocorrência de um dia da semana em um mês, -2 para a penúltima, e assim por diante.

Diferentemente de IntlCalendar::FIELD_WEEK_OF_MONTH e IntlCalendar::FIELD_WEEK_OF_YEAR, este valor não depende de IntlCalendar::getFirstDayOfWeek() ou de IntlCalendar::getMinimalDaysInFirstWeek(). A primeira segunda-feira é a primeira segunda-feira, mesmo se ela ocorrer em uma semana que pertença ao mês anterior.

IntlCalendar::FIELD_AM_PM int

Campo de calendário que indica se um horário é antes de meio-dia (valor 0, a.m.) ou depois (1). Meia-noite é a.m., meio-dia é p.m..

IntlCalendar::FIELD_HOUR int

Campo de calendário para a hora, sem especificar se é antes ou depois do meio-dia. Valores válidos são 0 a 11.

IntlCalendar::FIELD_HOUR_OF_DAY int

Campo de calendário para as horas integrais do dia (24h). Valores válidos são 0 a 23.

IntlCalendar::FIELD_MINUTE int

Campo de calendário para o componente de minutos do horário.

IntlCalendar::FIELD_SECOND int

Campo de calendário para o componente de segundos do horário.

IntlCalendar::FIELD_MILLISECOND int

Campo de calendário para o componente de milissegundos do horário.

IntlCalendar::FIELD_ZONE_OFFSET int

Campo de calendário que indica o deslocamento puro do fuso horário, em milissegundos. O deslocamento puro é o deslocamento do fuso horário, excluindo qualquer deslocamento devido a horário de verão.

IntlCalendar::FIELD_DST_OFFSET int

Campo de calendário para o deslocamento de horário de verão do fuso horário do calendário, em milissegundos, se ativo para o horário do calendário.

IntlCalendar::FIELD_YEAR_WOY int

Campo de calendário que represente o ano para propósito de semana do ano

IntlCalendar::FIELD_DOW_LOCAL int

Campo de calendário para o dia da semana da localidade. Este é um valor entre 1 e 7, 1 é usado para o dia da semana que corresponde ao valor retornado por IntlCalendar::getFirstDayOfWeek().

IntlCalendar::FIELD_EXTENDED_YEAR int

Campo de calendário para uma representação numérica do ano que é contínua através das eras. Para o calendário gregoriano, o valor deste campo corresponde ao de IntlCalendar::FIELD_YEAR para anos DC; um ano AC y é representando por -y + 1.

IntlCalendar::FIELD_JULIAN_DAY int

Campo de calendário para um número de dia juliano modificado. É diferente de um número de dia juliano convencional pois sua transição ocorre à meia-noite do fuso horário local ao invés da meia-noite UTC. Identifica unicamente uma data.

IntlCalendar::FIELD_MILLISECONDS_IN_DAY int

Campo de calendário que abrange a informação em IntlCalendar::FIELD_HOUR_OF_DAY, IntlCalendar::FIELD_MINUTE, IntlCalendar::FIELD_SECOND and IntlCalendar::FIELD_MILLISECOND. O intervalor é de 0 a 24 * 3600 * 1000 - 1. Não é a quantidade de milissegundos decorridos no dia pois em transições de horário de verão haverá descontinuidades análogas àquelas do horário do relógio de parede.

IntlCalendar::FIELD_IS_LEAP_MONTH int

Campo de calendário cujo valor é 1 para indicar um mês adicional e 0 caso contrário.

IntlCalendar::FIELD_FIELD_COUNT int

O número total de campos.

IntlCalendar::FIELD_DAY_OF_MONTH int

Apelido para IntlCalendar::FIELD_DATE.

IntlCalendar::DOW_SUNDAY int

Domingo.

IntlCalendar::DOW_MONDAY int

Segunda-feira.

IntlCalendar::DOW_TUESDAY int

Terça-feira.

IntlCalendar::DOW_WEDNESDAY int

Quarta-feira.

IntlCalendar::DOW_THURSDAY int

Quinta-feira.

IntlCalendar::DOW_FRIDAY int

Sexta-feira.

IntlCalendar::DOW_SATURDAY int

Sábado.

IntlCalendar::DOW_TYPE_WEEKDAY int

Saída de IntlCalendar::getDayOfWeekType() que indica se o dia é um dia da semana (e não do final de semana).

IntlCalendar::DOW_TYPE_WEEKEND int

Saída de IntlCalendar::getDayOfWeekType() que indica se o dia pertence ao final de semana.

IntlCalendar::DOW_TYPE_WEEKEND_OFFSET int

Saída de IntlCalendar::getDayOfWeekType() que indica que o final de semana começa no dia da semana informado.

IntlCalendar::DOW_TYPE_WEEKEND_CEASE int

Saída de IntlCalendar::getDayOfWeekType() que indica que o final de semana termina no dia da semana informado.

IntlCalendar::WALLTIME_FIRST int

Saída de IntlCalendar::getSkippedWallTimeOption() que indica que o horário de relógio na faixa pulada deve se referir ao mesmo instante que o relógio com uma hora a menos; e a saída de IntlCalendar::getRepeatedWallTimeOption() que indica que o horário do relógio na faixa repetida deve se referir ao instante da primeira ocorrência do horário em questão.

IntlCalendar::WALLTIME_LAST int

Saída de IntlCalendar::getSkippedWallTimeOption() que indica que o horário de relógio na faixa pulada deve se referir ao mesmo instante que o relógio com uma hora a mais; e a saída de IntlCalendar::getRepeatedWallTimeOption() que indica que o horário do relógio na faixa repetida deve se referir ao instante da segunda ocorrência do horário em questão.

IntlCalendar::WALLTIME_NEXT_VALID int

Saída de IntlCalendar::getSkippedWallTimeOption() que indica que o horário de relógio na faixa pulada deve se referir ao intante em que a transição de horário de verão ocorre (inicia).

Registro de Alterações

Versão Descrição
8.4.0 As constantes de classe agora são tipadas.

Índice

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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