PHP - использование strtotime с форматом даты в Великобритании (dd-mm-yy)
Довольно просто в PHP у меня есть дата 8 января 2011 года, в формате 08-01-11 - когда я запускаю это в strtotime и конвертирую его обратно в другой формат даты, он возвращается к 1 августа 2011 года - не идеал!
Есть ли простой способ обойти это, вместо того, чтобы помещать все в разные массивы/переменные и обратно?
Спасибо!
Ответы
Ответ 1
strtotime()
работает только с датами в США:
Функция ожидает, что ей будет задана строка, содержащая формат даты на английском языке в США, и попытается разобрать этот формат в отметке времени Unix...
Вам нужно будет либо изменить формат даты, либо использовать date_parse_from_format()
(PHP 5.3+), чтобы проанализировать строку стиля в Великобритании.
Ответ 2
Идеальное решение было бы для США использовать правильный формат даты в первую очередь...; 0)
Я делаю это, чтобы обойти это:
$date = "31/12/2012";
$bits = explode('/',$date);
$date = $bits[1].'/'.$bits[0].'/'.$bits[2];
$date
теперь strtotime
способен
Ответ 3
Из руководства по PHP:
"Даты в форматах m/d/y или dmy устраняются, глядя на разделитель между различными компонентами: если разделитель является косой чертой (/), тогда принимается американский m/d/y, тогда как if разделитель является тире (-) или точкой (.), тогда предполагается европейский формат dmy.
Чтобы избежать потенциальной двусмысленности, лучше всего использовать даты ISO 8601 (YYYY-MM-DD) или DateTime:: createFromFormat(), когда это возможно."
Я заменил слэш чертами, а затем strtotime работал так, как ожидалось, для британских дат.