DateTime :: createFromFormat и неполные даты

Я пытаюсь использовать 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 )
)

Спасибо!

0

Решение

Вы можете просто использовать конструктор объекта 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);
1

Другие решения

Почему вы не используете по умолчанию __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
0

По вопросам рекламы [email protected]