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