【问题标题】:Question and a problem about setlocale on windows according to information on php.net根据php.net上的信息,关于windows上setlocale的问题和问题
【发布时间】:2019-02-17 21:29:05
【问题描述】:

关于我在 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

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

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

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

【问题讨论】:

  • 我们在这里的标题中没有这么“解决”。如果您找到了自己的答案,您可以发布答案并接受它,或者删除问题。
  • @j08691 抱歉,不知道。我现在已经发布了,但它说我必须等待 2 天才能接受。

标签: php time setlocale


【解决方案1】:

解决方案:使用strftime() 而不是strtotime()

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

之前:

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

之后:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多