Я пытаюсь использовать createFromFormat
метод форматирования дат. Проблема в том, что когда дата неполная (пропущенные секунды, минуты или часы), это приводит к ошибке. Есть ли способ сделать эту работу даже для неполных дат, как показано ниже:
$my_sql_date = '2011-01-06 09:39';
$date2 = DateTime::createFromFormat('Y-m-d H:i:s', $my_sql_date);
print_r(DateTime::getLastErrors());
Array (
[warning_count] => 0
[warnings] => Array ( )
[error_count] => 1
[errors] => Array ( [16] => Data missing )
)
Спасибо!
Вы можете просто использовать конструктор объекта DateTime с вашим форматом.
$incompleteData = '2011-01-06 09:39';
$date2 = new DateTime($incompleteData);
Выше будет работать.
С помощью DateTime::createFromFormat
, Но при использовании этого метода ваша неполная дата всегда должна соответствовать указанному формату, поэтому вышеуказанный метод — ваш лучший выбор.
$incompleteData = '2011-01-06 09:39';
DateTime::createFromFormat('Y-m-d H:i', $incompleteData);
Почему вы не используете по умолчанию __construct
?
$my_sql_date = '2011-01-06 09:39';
$date = new DateTime($my_sql_date);
print_r($date);
Будет производить
DateTime Object
(
[date] => 2011-01-06 09:39:00.000000
[timezone_type] => 3
[timezone] => US/Pacific
)
Вы можете отформатировать его потом:
echo $date->format('Y-m-d H:i:s');
что приведет к
2011-01-06 09:39:00