PHP 尽管时区正确,但 strftime 输出错误格式

PHP strftime outputs wrong format despite correct timezone

我在 php.ini 中将时区配置为 Europe/Paris。执行 date_default_timezone_get() 时,我确实得到了正确的值。

然后,我希望 strftime('%x', date()) 输出类似于 16 novembre 2018 的法语格式。但是相反,我得到 11/16/2018 看起来像美国格式。

知道为什么吗?

将时区设置为 Europe/Paris 后,使用 echo date('d-M-Y') 它将显示您想要的时间。它对我有用

我试过了:

setlocale(LC_ALL, 'fr_utf8');


echo strftime("%d %B %Y", time());

并得到:

16 novembre 2018

时区对日期和时间的显示方式没有影响,因为您需要设置区域设置。语言环境名称没有标准,但幸运的是 PHP 的 setlocale() 函数将采用多个语言环境名称,在第一个成功的名称处停止。

// just a few common name formats
setlocale(LC_TIME, ["fr_FR.utf8", "fr_FR@euro", "fr_UTF8", "fr_FR", "french"]);
echo strftime("%d %B %Y", time());