根据 php.net 上的信息,关于 windows 上的 setlocale 的问题和问题

Question and a problem about setlocale on windows according to information on php.net

只是关于我在 php.net 上找到的有关 setlocale 的一些信息的问题 http://php.net/manual/en/function.setlocale.php

它说:

Note:

On Windows, setlocale(LC_ALL, '') sets the locale names from the system's regional/language settings (accessible via Control Panel).

这是否意味着如果我将 setlocale(LC_ALL, '') 添加到我的 php,它应该与我的系统相同?因为我已经做到了而且它仍然是英语几个月。

当我回显 setlocale(LC_ALL, 0) 我得到这个:

LC_COLLATE=C;LC_CTYPE=Norwegian (Bokm�l)_Norway.1252;LC_MONETARY=C;LC_NUMERIC=C;LC_TIME=C

当我回显 setlocale(LC_ALL, '') 我得到这个:

Norwegian (Bokm�l)_Norway.1252

所以我真的不知道从回声中该怎么做,它看起来像是设置为挪威语,当我使用 setlocale(LC_ALL, '') 时,我还应该将所有内容都设置为挪威语,包括时间,但事实并非如此。

这也是我用来更改时间格式的代码。

date('d.F', strtotime($row['date2']))

解决方案:使用strftime()代替strtotime()

strtotime 不考虑设置的语言环境。

之前:

date('d.F', strtotime($row['date2']))
Output: 17.February

之后:

setlocale(LC_ALL, '');
strftime('%e.%B',strtotime($row['date2']))
Output: 17.februar