PHP / SQL - DateTime类 - 如果用户未插入时间,如何自动添加时间

Now I sq use the DateTime class to convert to different time formats and I find it very useful except one feature. Before when the user try to add date but for some reason skip the time I got 00:00:00 for the time which was good enough for me. Now, with the DateTime class if the time is not included it return error. Here is my code:

    $dt = DateTime::createFromFormat("d.m.Y H:i:s", $data['event_time']);

    if($dt === false)
    {
        throw new Exception("Invalid date");
    }

    $formattedDate = $dt->format('Y-m-d H:i:s');

Every time I try to insert date without time I get Invalid date error. Is there a way to insert zeros on the place of the time, except getting error for this?

Thanks

Leron

Some simple pre-validation:

$date['event_time'] = trim($date['event_time']);
if (preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $date['event_time'])) {
    $date['event_time'] .= ' 00:00:00';
} else if (!preg_match('/^\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2}$/', $date['event_time'])) {
    die('Invalid format');
}

If you don't want to use regex I guess this should work too. If i was you I would use @deceze solution instead of this :P but for the sake of completeness, here it is:

$dt = DateTime::createFromFormat("d.m.Y H:i:s", $data['event_time']);

if($dt === false)
{
    $data['event_time'] = trim($data['event_time']);
    $data['event_time'] .= " 00:00:00";
    $dt = DateTime::createFromFormat("d.m.Y H:i:s", $data['event_time')
    if ($dt === false) {
      throw new Exception("Invalid date");
    }
}

$formattedDate = $dt->format('Y-m-d H:i:s');