0

现在我使用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出错。有没有办法在时间的地方插入零,除了为此出错?

谢谢

勒隆

4

2 回答 2

3

一些简单的预验证:

$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');
}
于 2012-06-22T07:30:42.487 回答
0

如果您不想使用正则表达式,我想这也应该有效。如果我是你,我会使用 @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');
于 2012-06-22T07:45:00.497 回答