環(huán)境:
CentOS 7.3.1611
PHP 7.1.3
代碼:
echo setlocale(LC_ALL, array('zh_CN.UTF-8', 'zh_CN.utf8', 'zh_CN')), PHP_EOL;
$date = new DateTime();
echo $date->format('Y-F-d l'), PHP_EOL;
輸出:
zh_CN.UTF-8
2017-May-22 Monday
另外的測試,在Shell中:
# export LC_ALL=zh_CN.UTF_8
# date
2017年 05月 22日 星期一 19:02:15 CST
# export LC_ALL=en_US.UTF_8
# date
Mon May 22 19:02:34 CST 2017
疑問:
在Bash中是可以實現(xiàn)日期輸出本地化的。
可為什么在PHP中,使用setlocale()函數(shù)無效呢。
敬請達人指教。
走同樣的路,發(fā)現(xiàn)不同的人生
以上兩個答案都沒說到點上。 setlocale
setlocale
strftime
strftime
- 根據(jù)區(qū)域設置格式化本地時間/日期
這兩個函數(shù)要配合使用,你才能看到效果。
不過,不過,即使這樣,跟你直接調用系統(tǒng) bash 的表現(xiàn)還是有差異,不一定符合你預期。
bash中的date命令調用的是linux中的一個date應用程序來實現(xiàn)的日期功能的顯示及輸出的
php是自己實現(xiàn)的日期對象及函數(shù)
兩者功能不一樣是十分可以理解的??!
這是兩種語言,方法機制不一樣,如果你在php
里面想得到中文這種格式,完全可以在php
中通過exec
調用shell
的方法:
$cmd = "export LC_ALL=zh_CN.UTF_8 && date";
$date = exec($cmd);