Как сделать strtotime-разбор дат в австралийском (то есть в Великобритании) формате: дд / мм / гггг?

Я не могу поверить, я никогда не сталкивался с этим раньше.

По сути, я анализирую текст в созданных человеком текстовых документах, и одно из полей, которые мне нужно проанализировать, - это дата и время. Поскольку я в Австралии, даты отформатированы какdd/mm/yyyy ноstrtotime хочет только проанализировать это как дату в США. Кроме того, взрыва/ не будет работать, потому что, как я уже говорил, эти документы напечатаны вручную, и некоторые из них принимают формуd M yy.

Я пробовал несколько комбинацийsetlocale но независимо от того, что я пытаюсь, язык всегда установлен на американский английский.

Я вполне уверен, что setlocale является ключом здесь, но я, кажется, не в состоянии найти правильный код. Пробовал эти:

а.е.аи-енen_AUАвстралияAUS

Что-нибудь еще я могу попробовать?

Для ясности: я работаю на IIS с коробкой Windows.

Спасибо :)

Iain

Пример:

$mydatetime = strtotime("9/02/10 2.00PM");
echo date('j F Y H:i', $mydatetime);

Производит

2 September 2010 14:00

Я хочу, чтобы это произвело:

9 February 2010 14:00

Мое решение

Я ставлю галочку на один из ответов здесь, так как это гораздо более легкое для чтения решение, но вот что я придумала:

$DateTime = "9/02/10 2.00PM";
$USDateTime = preg_replace('%([0-3]?[0-9]{1})\s*?[\./ ]\s*?((?:1[0-2])|0?[0-9])\s*?[./ ]\s*?(\d{4}|\d{2})%', '${2}/${1}/${3}', $DateTime);  
echo date('j F Y H:i',strtotime($USDateTime));

Поскольку я не могу полагаться на то, что пользователи будут соответствовать их дате, я сделал свое регулярное выражение немного более сложным:

0 или 1 цифра от 0 до 31 цифра от 0 до 9 - да, это будет соответствовать 37 как действительная дата, но я думаю, что регулярное выражение уже достаточно большое!Может быть какой-то пробелСимвол-разделитель («.», «/» Или «»)Может быть какой-то пробелИли:Число от 10 до 12 ИЛИЧисло от 1 до 9 с необязательным начальным 0Может быть какой-то пробелСимвол-разделитель («.», «/» Или «»)Может быть какой-то пробелИли:Номер 2 цифры длиной ИЛИКоличество цифр 4

Надеюсь, это будет соответствовать большинству стилей написания дат ...

Ответы на вопрос(6)

Ваш ответ на вопрос