Вопрос и проблема по setlocale на windows по информации на php.net

Просто вопрос о некоторой информации о setlocale, которую я нашел на php.net 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']))

person Seb    schedule 17.02.2019    source источник
comment
Мы не так РЕШАЕМ в названии здесь. Если вы нашли свой собственный ответ, вы можете либо опубликовать ответ и принять его, либо удалить вопрос.   -  person j08691    schedule 18.02.2019
comment
@ j08691 Извините, не знал. Я разместил сейчас, но он говорит, что я должен ждать 2 дня, чтобы принять его.   -  person Seb    schedule 18.02.2019


Ответы (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
person Seb    schedule 17.02.2019