Как решить проблему языка php strtotime, не синхронизированную с языком bash сервера - PullRequest
0 голосов
/ 05 мая 2020

У меня есть сервер, на котором работает немецкий язык для Bash. Когда я пытаюсь изменить время почтового журнала на этом сервере в метке времени Unix, используя ..

$time1="Mai-05-20 17:22:36";
$unix_time=strtotime($time1);

$ unix_time возвращает пустое значение, я думаю, потому что bash использует немецкий язык, а PHP - engli sh (?).

Как настроить запуск сценария php на том же языке, что и Bash локальный язык?

1 Ответ

2 голосов
/ 05 мая 2020

From docs (выделено мной):

strtotime - Разобрать любое Engli sh текстовое описание даты и времени в Unix отметка времени

В случае, если вам не нужна полная мощность strtotime() (в конце концов, вы, кажется, анализируете журналы из одной единственной программы), вы можете попробовать IntlDateFormatter::parse(). Вот быстрая и грязная демонстрация :

$fmt = new IntlDateFormatter('de_DE', null, null);
$fmt->setPattern('M-dd-yy hh:mm:ss');
$log_time = "Mai-05-20 17:22:36";
$unix_time = $fmt->parse($log_time);
echo date('r', $unix_time);

Вт, 5 мая 2020 г. 17:22:36 + 0200

Примечание. что время Unix является фиксированным моментом времени, поэтому на него не влияют часовые пояса. Я получаю +0200 при трансляции в местное время, потому что мой PHP часовой пояс по умолчанию в настоящее время соответствует CEST.

...