Как сделать 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Надеюсь, это будет соответствовать большинству стилей написания дат ...