Я не могу поверить, я никогда не сталкивался с этим раньше.
По сути, я анализирую текст в созданных человеком текстовых документах, и одно из полей, которые мне нужно проанализировать, - это дата и время. Поскольку я нахожусь в Австралии, даты отформатированы как dd/mm/yyyy
, но strtotime
хочет только проанализировать их как дату в США. Кроме того, взорвать по /
не получится, потому что, как я уже говорил, эти документы напечатаны вручную, а некоторые из них имеют вид d M yy
.
Я пробовал несколько комбинаций setlocale
, но независимо от того, что я пробую, язык всегда установлен на американский английский.
Я вполне уверен, что ключом здесь является setlocale, но я не могу найти правильный код. Пробовал эти:
- аи
- аи-ен
- en_AU
- Австралия
- AUS
Что-нибудь еще, что я могу попробовать?
Для ясности: я работаю на IIS с коробкой Windows.
Большое спасибо:)
Иэн
Пример: * 1 034 *
$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 до 3
- 1 цифра от 0 до 9 - да, это будет соответствовать 37 как действительная дата, но я думаю, что регулярное выражение уже достаточно большое!
- Может быть пробел
- Символ-разделитель («.», «/» Или «»)
- Может быть пробел
- Либо:
- Число от 10 до 12 ИЛИ
- Число от 1 до 9 с необязательным начальным 0
- Может быть пробел
- Символ-разделитель («.», «/» Или «»)
- Может быть пробел
- Либо:
- Номер длиной 2 цифры ИЛИ
- Номер длиной 4 цифры
Надеюсь, это будет соответствовать большинству стилей написания дат ...