我一直收到以下错误:
DateTime :: __ construct():无法解析位置0(4)处的时间字符串(46-61-9481):意外字符
与API中的这段脚本相关
$dob = new DateTime(str_replace('/','-',Input::post('date_of_birth')));
$customer->date_of_birth = $dob->getTimestamp();
关于代码,我的知识非常有限但是,我想知道是否有人能够让我知道要改变什么来避免这些错误。
答案 0 :(得分:1)
这里的问题是使用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;
答案 1 :(得分:0)
46
不是有效月份,也不是月份的有效日期。有效月份或月份日期永远不会以4
开头。
日期46-61-9481
无效,因此错误。
解决方案是在validate the input date传递给DateTime
构造函数之前。