2024 日本 PHP 研討會

IntlCalendar 類別

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

簡介

類別概要

類別 IntlCalendar {
/* 常數 */
公開 常數 整數 FIELD_ERA;
public const int FIELD_YEAR;

公開常數 整數 FIELD_YEAR;

public const int FIELD_MONTH;

公開常數 整數 FIELD_MONTH;

public const int FIELD_WEEK_OF_YEAR;

公開常數 整數 FIELD_WEEK_OF_YEAR;

public const int FIELD_WEEK_OF_MONTH;

公開常數 整數 FIELD_WEEK_OF_MONTH;

public const int FIELD_DATE;

公開常數 整數 FIELD_DATE;

public const int FIELD_DAY_OF_YEAR;

公開常數 整數 FIELD_DAY_OF_YEAR;

public const int FIELD_DAY_OF_WEEK;

公開常數 整數 FIELD_DAY_OF_WEEK;

public const int FIELD_DAY_OF_WEEK_IN_MONTH;

公開常數 整數 FIELD_DAY_OF_WEEK_IN_MONTH;

public const int FIELD_AM_PM;

公開常數 整數 FIELD_AM_PM;

public const int FIELD_HOUR;

公開常數 整數 FIELD_HOUR;

public const int FIELD_HOUR_OF_DAY;

公開常數 整數 FIELD_HOUR_OF_DAY;

public const int FIELD_MINUTE;

公開常數 整數 FIELD_MINUTE;

public const int FIELD_SECOND;

公開常數 整數 FIELD_SECOND;

public const int FIELD_MILLISECOND;

公開常數 整數 FIELD_MILLISECOND;

public const int FIELD_ZONE_OFFSET;

公開常數 整數 FIELD_ZONE_OFFSET;

public const int FIELD_DST_OFFSET;

公開常數 整數 FIELD_DST_OFFSET;

public const int FIELD_YEAR_WOY;

公開常數 整數 FIELD_YEAR_WOY;

public const int FIELD_DOW_LOCAL;

公開常數 整數 FIELD_DOW_LOCAL;

public const int FIELD_EXTENDED_YEAR;

公開常數 整數 FIELD_EXTENDED_YEAR;

公開 常數 整數 FIELD_JULIAN_DAY;
公開 常數 整數 FIELD_FIELD_COUNT;
公開 常數 整數 FIELD_DAY_OF_MONTH;
公開 常數 整數 DOW_SUNDAY;
公開 常數 整數 DOW_MONDAY;
公開 常數 整數 DOW_TUESDAY;
公開 常數 整數 DOW_WEDNESDAY;
公開 常數 整數 DOW_THURSDAY;
公開 常數 整數 DOW_FRIDAY;
公開 常數 整數 DOW_SATURDAY;
公開 常數 整數 DOW_TYPE_WEEKDAY;
公開 常數 整數 DOW_TYPE_WEEKEND;
公開 常數 整數 WALLTIME_FIRST;
公開 常數 整數 WALLTIME_LAST;
/* 方法 */
私有 __construct()
公開 add(整數 $field, 整數 $value): 布林
公開 after(IntlCalendar $other): 布林
公開 before(IntlCalendar $other): 布林
公開 clear(?整數 $field = null): true
公開 equals(IntlCalendar $other): 布林
公開 fieldDifference(浮點數 $timestamp, 整數 $field): 整數|false
公開 靜態 fromDateTime(DateTime|字串 $datetime, ?字串 $locale = null): ?IntlCalendar
公開 get(整數 $field): 整數|false
公開 靜態 getAvailableLocales(): 陣列
公開 getDayOfWeekType(整數 $dayOfWeek): 整數|false
公開 靜態 getKeywordValuesForLocale(字串 $keyword, 字串 $locale, 布林值 $onlyCommon): IntlIterator|false
公開 getLocale(整數 $type): 字串|false
公開 getMaximum(整數 $field): 整數|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
公開 set(整數 $field, 整數 $value):
公開 set(
    整數 $year,
    整數 $month,
    整數 $dayOfMonth = NULL,
    整數 $hour = NULL,
    整數 $minute = NULL,
    整數 $second = NULL
):
公開 setDate(整數 $year, 整數 $month, 整數 $dayOfMonth):
公開 setDateTime(
    整數 $year,
    整數 $month,
    整數 $dayOfMonth,
    整數 $hour,
    整數 $minute,
    ?整數 $second = null
):
公開 setFirstDayOfWeek(整數 $dayOfWeek):
公開 setLenient(布林值 $lenient):
public setTime(float $timestamp): bool
}

預先定義的常數

IntlCalendar::FIELD_ERA int

數值表示年代的日曆欄位,例如在格里高利曆/儒略曆中,公元用 `1` 表示,公元前用 `0` 表示,而在日本曆法中,平成年代用 `235` 表示。並非所有曆法都有多個年代。

IntlCalendar::FIELD_YEAR int

表示年份的日曆欄位。這在不同年代中並不是唯一的。如果日曆類型有多個年代,通常此欄位的最小值將為 `1`。

IntlCalendar::FIELD_MONTH int

表示月份的日曆欄位。月份序列是從零開始的,因此一月(這裡用來表示日曆的第一個月;這可能被稱為另一個名稱,例如伊斯蘭曆中的 Muharram)由 `0` 表示,二月由 `1` 表示,...,十二月由 `11` 表示,而對於有閏月的日曆,閏月由 `12` 表示。

IntlCalendar::FIELD_WEEK_OF_YEAR int

表示一年中週數的日曆欄位。這取決於一周的起始日一周的最小天數

IntlCalendar::FIELD_WEEK_OF_MONTH int

表示一個月中週數的日曆欄位。這取決於一周的起始日一周的最小天數

IntlCalendar::FIELD_DATE 整數 (int)

日曆欄位,表示月份中的日期。與 IntlCalendar::FIELD_DAY_OF_MONTH 相同,後者名稱更清晰。

IntlCalendar::FIELD_DAY_OF_YEAR 整數 (int)

日曆欄位,表示一年中的日期。對於格里高利曆,從 1 開始,到 365366 結束。

IntlCalendar::FIELD_DAY_OF_WEEK 整數 (int)

日曆欄位,表示星期幾。其值從 1(星期日,參見 IntlCalendar::DOW_SUNDAY 以及後續常數)開始,最後一個有效值為 7(星期六)。

IntlCalendar::FIELD_DAY_OF_WEEK_IN_MONTH 整數 (int)

給定一個星期幾(星期日、星期一……),此日曆欄位會將序數指定給特定月份中該星期幾的日期。因此,如果此欄位的值為 1 且星期幾的值為 2(星期一),則設定的日期為該月的第一個星期一;最大值為 5

此外,也允許值 0 和負值。值 0 包含緊接在一個月的前七天之前的七天(因此它們的「月中星期幾」值為 1)。負值從月底開始倒數 — -1 指向一個月中最後一次出現的星期幾,-2 指向倒數第二次出現的星期幾,依此類推。

IntlCalendar::FIELD_WEEK_OF_MONTHIntlCalendar::FIELD_WEEK_OF_YEAR 不同,此值不取決於 IntlCalendar::getFirstDayOfWeek()IntlCalendar::getMinimalDaysInFirstWeek()。第一個星期一就是第一個星期一,即使它出現在屬於上個月的星期中也是如此。

IntlCalendar::FIELD_AM_PM 整數 (int)

日曆欄位,指示時間是中午之前(值 0,上午)還是中午之後(值 1,下午)。午夜是上午,中午是下午。

IntlCalendar::FIELD_HOUR 整數 (int)

日曆欄位,表示小時,不指定是上午還是下午。有效值為 011

IntlCalendar::FIELD_HOUR_OF_DAY int

用於一天中完整小時 (24 小時制) 的日曆欄位。有效值為 023

IntlCalendar::FIELD_MINUTE int

用於時間分鐘組成的日曆欄位。

IntlCalendar::FIELD_SECOND int

用於時間秒數組成的日曆欄位。

IntlCalendar::FIELD_MILLISECOND int

用於時間毫秒組成的日曆欄位。

IntlCalendar::FIELD_ZONE_OFFSET int

指示時區原始偏移量(以毫秒為單位)的日曆欄位。原始偏移量是時區偏移量,不包括任何因日光節約時間產生的偏移量。

IntlCalendar::FIELD_DST_OFFSET int

日曆時區的日光節約時間偏移量(以毫秒為單位)的日曆欄位,如果在日曆時間生效的話。

IntlCalendar::FIELD_YEAR_WOY int

基於一年中週數用途的年份表示法的日曆欄位。

IntlCalendar::FIELD_DOW_LOCAL int

用於本地化星期幾的日曆欄位。這是一個介於 17 之間的值,1 用於與 IntlCalendar::getFirstDayOfWeek() 返回值相符的星期幾。

IntlCalendar::FIELD_EXTENDED_YEAR int

跨時代連續的年份數字表示法的日曆欄位。對於格里高利曆,此欄位的值與公元年的 IntlCalendar::FIELD_YEAR 相符;公元前 y 年表示為 -y + 1

IntlCalendar::FIELD_JULIAN_DAY int

用於修正儒略日的日曆欄位。它與傳統的儒略日不同,其轉換發生在當地時區的午夜,而不是世界協調時間的中午。它唯一地標識一個日期。

IntlCalendar::FIELD_MILLISECONDS_IN_DAY int

包含 IntlCalendar::FIELD_HOUR_OF_DAYIntlCalendar::FIELD_MINUTEIntlCalendar::FIELD_SECONDIntlCalendar::FIELD_MILLISECOND 資訊的日曆欄位。範圍從 024 * 3600 * 1000 - 1。它不是一天中經過的毫秒數,因為在日光節約時間轉換時,它會出現類似於壁鐘時間的不連續性。

IntlCalendar::FIELD_IS_LEAP_MONTH int

日曆欄位,其值為 1 表示閏月,0 則表示非閏月。

IntlCalendar::FIELD_FIELD_COUNT int

欄位的總數量。

IntlCalendar::FIELD_DAY_OF_MONTH int

IntlCalendar::FIELD_DATE 的別名。

IntlCalendar::DOW_SUNDAY int

星期日。

IntlCalendar::DOW_MONDAY int

星期一。

IntlCalendar::DOW_TUESDAY int

星期二。

IntlCalendar::DOW_WEDNESDAY int

星期三。

IntlCalendar::DOW_THURSDAY int

星期四。

IntlCalendar::DOW_FRIDAY int

星期五。

IntlCalendar::DOW_SATURDAY int

星期六。

IntlCalendar::DOW_TYPE_WEEKDAY int

IntlCalendar::getDayOfWeekType() 的輸出,表示該星期幾為平日。

IntlCalendar::DOW_TYPE_WEEKEND int

IntlCalendar::getDayOfWeekType() 的輸出,表示該星期幾屬於週末。

IntlCalendar::DOW_TYPE_WEEKEND_OFFSET int

IntlCalendar::getDayOfWeekType() 的輸出,表示週末從指定的星期幾開始。

IntlCalendar::DOW_TYPE_WEEKEND_CEASE int

IntlCalendar::getDayOfWeekType() 的輸出,表示週末在指定的星期幾結束。

IntlCalendar::WALLTIME_FIRST int

IntlCalendar::getSkippedWallTimeOption() 的輸出,表示跳過範圍內的壁鐘時間應參考比其少一小時的壁鐘時間的同一瞬間;IntlCalendar::getRepeatedWallTimeOption() 的輸出,表示重複範圍內的壁鐘時間應參考該壁鐘時間首次出現的瞬間。

IntlCalendar::WALLTIME_LAST int

IntlCalendar::getSkippedWallTimeOption() 的輸出,指出略過範圍內的時鐘時間應參考與之後一小時相同的瞬間時間,以及 IntlCalendar::getRepeatedWallTimeOption() 的輸出,指出重複範圍內的時鐘時間應參考此類時鐘時間第二次出現的瞬間時間。

IntlCalendar::WALLTIME_NEXT_VALID int

IntlCalendar::getSkippedWallTimeOption() 的輸出,指出略過範圍內的時鐘時間應參考日光節約時間轉換發生(開始)時的瞬間時間。

更新日誌

版本 說明
8.4.0 類別常數現在已鍵入。

目錄

新增註釋

使用者貢獻的註釋 1 則註釋

Doug
1 年前
取得一週及其邊界的範例(用於構建日曆檢視)

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

$thisWeek = IntlCalendar::fromDateTime($date, $locale);
$thisWeek->set(IntlCalendar::FIELD_DAY_OF_WEEK, $thisWeek->getFirstDayOfWeek());
// $thisWeek 現在指向一週的第一天
$weekStart = $thisWeek->toDateTime();

$daysToAdvance = $thisWeek->getMaximum(IntlCalendar::FIELD_DAY_OF_WEEK) - 1;
// 一週中的最大天數減 1 可得到最後一天
$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