PHP:DateTime :: __ construct()错误

时间:2016-03-12 14:00:53

标签: php

我一直收到以下错误:

  

DateTime :: __ construct():无法解析位置0(4)处的时间字符串(46-61-9481):意外字符

与API中的这段脚本相关

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

关于代码,我的知识非常有限但是,我想知道是否有人能够让我知道要改变什么来避免这些错误。

2 个答案:

答案 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构造函数之前。