簡體   English   中英

為什么要從 php 中刪除 strftime?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM