现在我使用 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');