所以,我在strftime()被棄用之前使用了這段代碼:
setlocale(LC_TIME, IT);
echo "<p>" . strftime("%A %e %h %Y", strtotime($value)) . "</p>";

現在,使用date()相同的代碼,輸出不會改變語言。
setlocale(LC_TIME, 'it_IT.utf8');
echo "<p>" . date("l d M Y", strtotime($value)) . "</p>";

**忽略變數$value
我沒有看到setlocale(LC_TIME, 'IT')和之間setlocale(LC_TIME, 'it_IT.utf8')的區別date()......但strftime()只適用setlocale(LC_TIME, 'IT')于第二個而不是第二個
有任何想法嗎?
uj5u.com熱心網友回復:
date()方法接受的函式DateTimeInterface::format()使用格式。
該方法DateTimeInterface::format()不使用語言環境。所有輸出均為英文。
因此,這意味著該date()函式也不使用語言環境。
測驗:
setlocale(LC_ALL, 'IT.utf8');
echo date('l', time()).'<br>';// display Friday
setlocale(LC_ALL, 'fr');
echo date('l', time()).'<br>';// display Friday
setlocale(LC_ALL, 'th');
echo date('l', time()).'<br>';// display Friday
所有語言環境都顯示相同:Friday。
strftime()已棄用。
用語言環境(可能包括時區)替換顯示日期/時間是什么?是最好的選擇
。IntlDateFormatter
從您之前的代碼:
setlocale(LC_TIME, 'IT.utf8');
echo "<p>" . strftime("%A %e %h %Y", time()) . "</p>";// display venerdì 15 apr 2022
您現在可以使用:
$fmt = new IntlDateFormatter('IT',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL
);
$fmt->setPattern('EEEE d LLL yyyy');
echo $fmt->format(time());// display venerdì 15 apr 2022
格式將使用setPattern()方法,可能的模式記錄在https://unicode-org.github.io/icu/userguide/format_parse/datetime/。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/461652.html
上一篇:從另一個函式功能性地創建陣列
下一篇:基于日期和時間回顯條件文本
