[英]Why is strftime being removed from php?
我搜索了整個 web,但找不到從 php 中刪除strftime
的原因。從我的角度來看,它是完美的 function,可以輕松訪問自定義日期格式。 “替代” IntlDateFormatter::format()
感覺很麻煩。
誰能解釋為什么strftime
不再是 php 的一部分?
這是因為它有“更好”的方法,比如IntlDateFormatter::format
如此 處所述
PHP 提供獨立於語言環境和語言環境感知的時間格式化 API,這些 API 更好、功能更豐富且更直觀。 在 PHP 8.1 及更高版本中,strftime 和 gmstrftime 已棄用,使用它們會發出棄用通知。 這些功能將在 PHP 9.0 中移除。
問題也在那里說明:
strftime 和 gmstrftime 函數根據使用 setlocale function 設置的當前區域設置格式化 Unix 時間戳。gmstrftime function 類似於 strftime,只是它返回格林威治標准時間 (GMT) 的時間。
setlocale function 將區域設置設置為 PHP 進程,而不是當前工作線程。 如果另一個線程調用 setlocale function,這可能會導致語言環境突然改變。如果 PHP 用於多線程服務器 API(例如用於 PHP 的 mod_php),這可能會特別麻煩。
它還引用替換:
對於可識別區域設置的日期/時間格式,請使用 IntlDateFormatter::format(需要 Intl 擴展名)。
在現實和理想的用例中,IntlDateFormatter object 根據用戶的語言環境信息被實例化一次,並且 object 實例可以在任何需要的時候使用。
setlocale(LC_TIME, "en_US");
echo strftime('%x', time());
$formatter = new IntlDateFormatter('en_US', IntlDateFormatter::LONG, IntlDateFormatter::NONE);
echo $formatter->format(time());
從 這里開始:
strftime 和 gmstrftime 函數根據使用 setlocale function 設置的當前區域設置格式化 Unix 時間戳。gmstrftime function 類似於 strftime,只是它返回格林威治標准時間 (GMT) 的時間。
setlocale function 將區域設置設置為 PHP 進程,而不是當前工作線程。 如果另一個線程調用 setlocale function,這可能會導致語言環境突然改變。如果 PHP 用於多線程服務器 API(例如用於 PHP 的 mod_php),這可能會特別麻煩。
PHP 提供獨立於語言環境和語言環境感知的時間格式化 API,這些 API 更好、功能更豐富且更直觀。 在 PHP 8.1 及更高版本中,strftime 和 gmstrftime 已棄用,使用它們會發出棄用通知。 這些功能將在 PHP 9.0 中移除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.