我一直收到以下错误:
DateTime::__construct():未能解析位于0(4)位置的时间字符串(46-61-9481):意外字符
,它与API中的这段脚本有关。
$dob = new DateTime(str_replace('/','-',Input::post('date_of_birth')));
$customer->date_of_birth = $dob->getTimestamp();当涉及到代码时,我的知识非常有限,但是,我想知道是否有人会让我知道应该修改什么来避免这些错误。
发布于 2016-03-12 18:48:47
这里的问题是DateTime()的使用。PHP DateTime()需要一个有效的日期,否则它会抛出异常。如果您仍然希望接受无效的日期输入,最好将其放入try catch块中。如果日期是有效的,它将工作良好,否则它将来捕获块。在catch块中,可以设置默认日期(如00/00/0000 )并保存到DB。
try {
$date = new DateTime('01-01-2016');
$date = $date->format('m/d/Y');
} catch (\Exception $e) {
$date = '00/00/0000';
}
echo $date;发布于 2016-03-12 14:03:47
46不是一个有效的月份,也不是一个有效的月份。有效的月份或月中的一天从不以4开头。
日期46-61-9481无效,因此出现错误。
解决方案是在将validate the input date传递给DateTime构造函数之前对它进行处理。
https://stackoverflow.com/questions/35958559
复制相似问题