Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP strftime输出错误的格式,尽管时区正确_Php_Date_Timezone_Locale_Strftime - Fatal编程技术网

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

PHP strftime输出错误的格式,尽管时区正确,php,date,timezone,locale,strftime,Php,Date,Timezone,Locale,Strftime,我在php.ini中将时区配置为欧洲/巴黎。在执行date\u default\u timezone\u get时,我确实得到了正确的值 然后,我希望strftime“%x”,date输出类似2018年11月16日的法语格式。但是,我得到的是2018年11月16日,看起来像美国的格式 知道为什么吗?将时区设置为欧洲/巴黎后,使用回音日期'd-M-Y',它将显示您想要的时间。它对我有效我试过: setlocale(LC_ALL, 'fr_utf8'); echo strftime("%d %B

我在php.ini中将时区配置为欧洲/巴黎。在执行date\u default\u timezone\u get时,我确实得到了正确的值

然后,我希望strftime“%x”,date输出类似2018年11月16日的法语格式。但是,我得到的是2018年11月16日,看起来像美国的格式


知道为什么吗?

将时区设置为欧洲/巴黎后,使用回音日期'd-M-Y',它将显示您想要的时间。它对我有效

我试过:

setlocale(LC_ALL, 'fr_utf8');


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

16 novembre 2018

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

// 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());

设置时区不会设置区域设置。您需要查看或讨论将其放在INI文件中,它似乎不起作用。设置locale'fr_fr'后,格式仍然相同。在服务器上,运行locale-a以查看可用的locale。在不同的操作系统上,它们的名称通常不同。fr_fr很可能是您要找的。我这边可能有2018年11月16日英文版的副本。但无论如何,我必须坚持使用%x,因为我托管的应用程序不是我的,并且使用此格式。%x应该提供2018年11月16日的格式:%x基于区域设置的首选日期表示形式,没有时间示例:2009年2月5日的02/05/09法语中的x将给您2018年11月16日好的,我终于注意到fr_fr尚未添加到我的服务器。多亏了,我添加了它,然后使用setlocale'fr_fr'完成了这个任务。感谢您的帮助:请记住,如果您计划在任何不同的服务器上运行此功能,那么使用每个名称都会更安全!在上,没有区域设置名称的标准-这是不正确的。IETF语言标签是标准,包含在中。更多就其他部分达成一致。时区和地点是正交的。@MattJohnson I站更正。我应该说操作系统制造商没有一贯遵循的标准。嗨,这不应该起作用,用户希望2018年11月16日的法语版本。