2024 年日本 PHP 研討會

IntlCalendar::fromDateTime

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

IntlCalendar::fromDateTime從 DateTime 物件或字串建立 IntlCalendar

說明

物件導向風格

公開 靜態 IntlCalendar::fromDateTime(DateTime|字串 $datetime, ?字串 $locale = null): ?IntlCalendar

程序式風格

intlcal_from_date_time(DateTime|字串 $datetime, ?字串 $locale = null): ?IntlCalendar

DateTime 物件或可以建構 DateTime 物件的字串建立一個 IntlCalendar 物件。

新的日曆不僅會表示與給定的 DateTime 相同的瞬間(對於過去或未來很遙遠的日期可能會損失精度),還會表示相同的時區(需要注意的是,將使用不同的時區資料庫,因此結果可能不同)。

參數

datetime

一個 DateTime 物件或可以傳遞給 DateTime::__construct()字串

傳回值

建立的 IntlCalendar 物件,如果失敗則傳回 null。如果傳遞 字串,則 DateTime 建構函式內發生的任何例外狀況都會被傳播。

範例

範例 #1 IntlCalendar::fromDateTime()

<?php
ini_set
('date.timezone', 'Europe/Lisbon');

//與 IntlCalendar::fromDateTime(new DateTime(...)) 相同
$cal1 = IntlCalendar::fromDateTime('2013-02-28 00:01:02 Europe/Berlin');

//注意時區是 Europe/Berlin,而不是預設的 Europe/Lisbon
echo IntlDateFormatter::formatObject($cal1, 'yyyy MMMM d HH:mm:ss VVVV', 'de_DE'), "\n";

以上範例將輸出

2013 Februar 28 00:01:02 Deutschland Zeit

新增筆記

使用者貢獻的筆記 1 則筆記

SenseException
10 年前
別忘了 fromDateTime() 並不會設定任何地區設定,而是會使用預設的地區設定。在我的情況下,預設地區設定是 en_US_POSIX。

如果您想要建立一個包含 DateTime 物件值且使用您指定地區設定的 IntlCalendar 物件,請改用 createInstance() 並執行以下程式碼:

<?php
$intlCalendar
->setTime($dateTime->getTimestamp() * 1000);
?>

IntlCalendar 使用毫秒,因此您需要將時間戳記乘以 1000。

使用 fromDateTime() 可能會導致非預期的行為,例如 getFirstDayOfWeek() 傳回錯誤的整數。
To Top