PHP: DateTime::__construct() error


PHP: DateTime::__construct() error

我不断收到以下错误:

日期时间::__construct(): 无法分析位置 0 处的时间字符串 (46-61-9481) (4):意外字符

与 API 中的这段脚本相关

 $dob = new DateTime(str_replace('/','-',Input::post('date_of_birth')));
  $customer->date_of_birth = $dob->getTimestamp();

在代码方面,我的知识非常有限,但是,我想知道是否有人愿意让我知道要更改什么以避免这些错误。

这里的问题是使用DateTime()。PHP DateTime() 需要一个有效的日期,否则它将抛出异常。如果您仍然想接受无效的日期输入,最好将其放在 try catch 块中。如果日期是有效的,它将运行良好,否则它将进入捕获块。在 catch 块中,您可以设置默认日期,例如 00/00/0000 并保存到数据库。

try {
    $date = new DateTime('01-01-2016');
    $date = $date->format('m/d/Y');
} catch ('Exception $e) {
    $date = '00/00/0000';
}
echo $date;

>46不是有效的月份,也不是有效的月份。有效的月份或月中的某天永远不会以4开头。

日期46-61-9481无效,因此错误。

解决方案是在将输入日期传递给构造函数之前对其进行验证DateTime