Вопрос и проблема с setlocale на windows согласно информации на php.net - PullRequest
0 голосов
/ 18 февраля 2019

Просто вопрос о некоторой информации о 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']))

1 Ответ

0 голосов
/ 18 февраля 2019

РЕШЕНИЕ : использование strftime() вместо strtotime().

strtotime не учитывает установленную локаль.

До:

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

После:

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