遇到的格式不正确

我有一个表单将两个date(开始和结束)传递给一个将脚本添加到数据库的PHP脚本。 我有问题validation这一点。 我不断收到以下错误

遇到的格式不正确

这是当我使用以下

date("d",$_GET['start_date']); 

但是,当我使用strtotime()函数build议由许多网站我得到一个Unix时间戳date1/1/1970。 任何想法如何我可以得到正确的date?

这可能是因为您将string作为第二个parameter passing给date函数。 尝试strtotime :

 date("d",strtotime($_GET['start_date'])); 

$_GET['start_date']不是数字是我的赌注,但strtotime不支持的date格式。 您需要将date重新格式化为适合的时间格式,或使用explode / mktime的组合。

如果您愿意发布您目前收到的格式,我可以添加一个例子。

我遇到了同样的情况(在我的情况下,在Drupal视图中的自定义PHP字段中的date值),而对我而言,使用intval而不是strtotime将值转换为整数 – 因为它基本上是一个时间戳,而是以一个string的forms而不是一个整数。 显然这不是每个人的情况,但可能值得一试。

只要你可以使用strtotime()函数来解决这个问题。

 date("d",strtotime($_GET['start_date'])); 

这是一个古老的问题,但是这个消息还有另一个微妙的方式。 这里解释得很好,在文档中 。

想象一下这个场景:

 try { // code that triggers a pdo exception } catch (Exception $e) { throw new MyCustomExceptionHandler($e); } 

MyCustomExceptionHandler的定义大致如下:

 class MyCustomExceptionHandler extends Exception { public function __construct($e) { parent::__construct($e->getMessage(), $e->getCode()); } } 

这实际上会在自定义exception处理程序中触发一个新的exception,因为Exception类在构造函数中需要一个第二个参数的数字,但是PDOException可能会dynamic地将$e->getCode()的返回types更改为一个string。

解决这个问题的办法是定义你自定义的exception处理程序,如:

 class MyCustomExceptionHandler extends Exception { public function __construct($e) { parent::__construct($e->getMessage()); $this->code = $e->getCode(); } } 

这帮了我很多 –

 $new_date = date_format(date_create($old_date), 'Ym-d');