我有一个表单将两个日期(开始和结束)传递给一个将脚本添加到数据库的PHP脚本。我有问题验证这一点。我不断收到以下错误遇到的格式不正确的数字值
非合式数值遇到
这是当我使用下面的
date("d",$_GET['start_date']);
但是,当我使用的strtotime()功能建议通过许多网站我得到一个unix时间戳日期1970年1月1日。 任何想法如何我可以得到正确的日期?
我有一个表单将两个日期(开始和结束)传递给一个将脚本添加到数据库的PHP脚本。我有问题验证这一点。我不断收到以下错误遇到的格式不正确的数字值
非合式数值遇到
这是当我使用下面的
date("d",$_GET['start_date']);
但是,当我使用的strtotime()功能建议通过许多网站我得到一个unix时间戳日期1970年1月1日。 任何想法如何我可以得到正确的日期?
这可能是因为您将字符串作为第二个参数传递给日期函数。尝试strtotime:
date("d",strtotime($_GET['start_date']));
我就遇到了这个同样的情况(在我的情况下,在一个Drupal视图中的自定义PHP领域日期值),以及什么工作适合我使用的替代的strtotime被INTVAL打开值到一个整数 - 因为它基本上是一个时间戳,但以一个字符串而不是一个整数的形式。很明显,每个人都不会这样,但这可能值得一试。
这是一个古老的问题,但这种信息可能会发生另一种微妙的方式。它的解释很好here, in the docs。
想象一下之情况:
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
类期待一个号码在其构造函数中的第二个参数,但PDOException
可能已动态地将返回类型$e->getCode()
更改为字符串。
针对此解决方法是定义你喜欢自定义异常处理程序:
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage());
$this->code = $e->getCode();
}
}
只要你能解决使用strtotime()
功能这个问题。
date("d",strtotime($_GET['start_date']));
这对我帮助很大 -
$new_date = date_format(date_create($old_date), 'Y-m-d');
您需要发布的东西'$ _GET [ '起始日期']'包含的内容。 – JohnP 2011-05-26 09:31:43
我假设你的'$ _GET ['start_date']'不是[时间戳](http://en.wikipedia。org/wiki/Timestamp),这是'date'函数预期的第二个参数 – Nemoden 2011-05-26 09:36:07
DChaplin的第二个答案在这种情况下更合适 – cw24 2015-07-09 19:08:12