【发布时间】:2015-11-06 03:39:36
【问题描述】:
我只有基本的 PHP 知识,我正在使用 PHP+Mysql 并尝试检查 2 个日期之间的天数差异;第一个日期在脚本中由我自己格式化为字符串:
$f_entrega=$_POST['year1']."-".$_POST['month1']."-".$_POST['day1'];
导致问题的第二个日期 ($f_dock) 取自 mysql 数据库,该列采用 DATE 格式。为了比较日期,我执行以下操作:
if(!empty($_POST["id"])){
$f_entrega=$_POST['f_entrega_a']."-".$_POST['f_entrega_m']."-".$_POST['f_entrega_d'];
$f_entr=$f_entrega;
$mysqli=conectar();
$resultado = $mysqli->query("SELECT id,f_dock FROM pt");
$row = $resultado->fetch_assoc();
for ($i=0;$i<count($ids);$i++){
do{
if ($ids[$i]==$row["id"]){
$f_dock=$row["f_dock"];
break;
}
} while ($row = $resultado->fetch_assoc());
$error=0;
var_dump($f_dock);
$f_dock=strtotime($f_dock);
$f_dock=date('Ymd',$f_dock);
$f_entrega=$f_entr;
$f_entrega=strtotime($f_entrega);
$f_entrega=date('Ymd',$f_entrega);
$f_dock=DateTime::createFromFormat('Ymd',$f_dock);
$f_entrega=DateTime::createFromFormat('Ymd',$f_entrega);
$dias_vendor=date_diff($f_dock,$f_entrega);
$tat=$dias_vendor->format('%R%a');
有时它可以正常工作,但有时我会收到警告:strtotime() 期望参数 1 是字符串,[第一行]中给出的对象和 $tat 计算不正确并且具有奇怪的值。
我之前尝试过不同的解决方案,例如$f_dock=(string)$f_dock,但最终在某些情况下转换总是失败。提前感谢您的任何提示。
【问题讨论】:
-
此错误
Warning: strtotime()expects parameter 1 to be string表示$f_entrega为空或无效字符串以格式化日期。您可以控制它查看 var_dump 中的值:var_dump($f_entrega)在 strtotime 函数之前。告诉我们脚本失败时这个 var_dump 的结果是什么 -
var_dump 的输出如下:string(10) "2015-08-11"
标签: php mysql string date compare