С помощью this question я смог проанализировать строку даты в объекте DateTime
, а затем отобразить его в нужном формате. Конструктор DateTime
хорошо работает в расшифровке строк DateTime
с одним (очень понятным) исключением - он не может отличить dd/mm/YYYY
и mm/dd/YYYY
.Создание PHP DateTime, когда формат неизвестен
Если я сделать следующее:
$dt = new DateTime("05/03/1900"); // 5th march 1900
echo $dt->format('Y-m-d');
Тогда я получаю следующий результат:
1900-05-03
Однако оригинальная дата в формате dd/mm/YYYY
, поэтому мой выход неверен - теперь у меня есть 3rd May 1900
.
Есть ли способ установить DateTime
, чтобы предпочесть dd/mm/YYYY
более mm/dd/YYYY
при анализе строки даты?
Edit: Я зову date_default_timezone_set('Europe/London');
в конструкторе этого класса, но это, кажется, не имеют никакого эффекта. Возможно, это не связано с классом DateTime
.
Для часового пояса: 'DateTime :: createFromFormat ('d/M/Y', '05/03/1900' , новый DateTimeZone ('Europe/London')) ; ' – vaso123
Объект DateTime похож на' strtotime() ' Предполагается, что дата - формат США, если вы используете'/'в качестве разделителя и европейца, если вы используете' -' в качестве разделителя. – RiggsFolly
Если формат неизвестен, вы не можете его достоверно разобрать. что сказать, что ваша дата - dd/mm/yyyy или mm/dd/yyyy? «/» Намекает, что это формат США, но ничто не говорит, что это должно быть. это либо пятое, либо 3-е. вы не можете сказать. –