Как преобразовать ISO8601 в формат даты в php

Как конвертировать это (в формате ISO8601): 2014-03-13T09: 05: 50.240Z

К этому (в формате MySQL DATE): 2014-03-13

в php?

Ответ 1

попробуй это

$date = '2014-03-13T09:05:50.240Z';

$fixed = date('Y-m-d', strtotime($date));

Полную документацию по функциям даты можно найти здесь: http://php.net/manual/en/function.date.php

Функция PHP "strtotime" не делает ничего, а затем преобразует вашу timestring в временную метку unix.

Надеюсь, что смогу помочь :)

Ps: На всякий случай strtotime вернется 0 попробуйте использовать это:

$date = '2014-03-13T09:05:50.240Z';

$fixed = date('Y-m-d', strtotime(substr($date,0,10)));

Ответ 2

С PHP 5.2.0 вы также можете использовать OOP и DateTime() (конечно, если вы предпочитаете ООП):

$now = new DateTime("2014-03-13T09:05:50.240Z");
echo $now->format('Y-m-d');    // MySQL datetime format

Ответ 3

Просто преобразуйте описание datetime в временную метку Unix, используя с strtotime, а затем пять форматов с использованием форматов даты

Попробуйте, это наверняка сработает для вас.

$date = '2014-03-13T09:05:50.240Z';

$fixed = date('Y-m-d', strtotime($date));

Ответ 4

Нет причин использовать неэффективные функции времени. Самый эффективный способ - просто обрезать первые 10 символов:

substr($date,0,10)