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


PHP/SQL - DateTime class - how to add automaticlly time if it's not inserted by the user

现在我使用 DateTime 类转换为不同的时间格式,我发现它非常有用,除了一个功能。在用户尝试添加日期但由于某种原因跳过时间之前,我得到了00:00:00的时间,这对我来说已经足够好了。现在,对于DateTime类,如果未包括时间,则返回错误。 这是我的代码:

    $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');

每次我尝试在没有时间的情况下插入日期时,我都会Invalid date错误。有没有办法在时间位置插入零,除了为此出现错误?

谢谢

莱龙

一些简单的预验证:

$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');
}

如果你不想使用正则表达式,我想这也应该有效。如果我是你,我会使用@deceze解决方案而不是这个:P但为了完整起见,这里是:

$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');