我使用了一些数组p1、p2。他们的第三个参数是从mysql数据库中获取的日期时间。当我试图找出这些日期时间之间的差异时,会出现一条警告:Warning: date_diff() expects parameter 1 to be DateTimeInterface, string given in ...
这是代码:
$format = "Y-m-d H:m:s";
$t1 = strtotime($p1[2]);
$time1 = date($format,$t1);
$t2 = strtotime($p2[2]);
$time2 = date($format,$t2);
$diff = date_diff($time1, $time2);
新编辑这就是我从数据库获取日期时间的方式:
$temp=array();
foreach ($arr_smp as $column => $context) {
if($column == "latitude" || $column == "longitude" || $column == "date_time")
{
array_push($temp,$context);
}
其中$context
是lat或lon或date_time
你能帮忙吗?提前感谢!
如错误所述,您还将来自数据库表的值写入字符串。因此,您需要将它们转换为DateTime()
对象,然后获得差异。请看一下:-
<?php
$p1[2] = "2015-10-10"; // i assume that $p1[2] is like this
$p2[2] = "2015-10-12"; // i assume that $p2[2] is like this
$t1 = new DateTime($p1[2]); //conversion into date-time object
$t2 = new DateTime($p2[2]); //conversion into date-time object
$diff = date_diff($t1, $t2); // get difference
echo "<pre/>";print_r($diff); // print difference
?>
输出:-https://eval.in/388744
此代码有一些错误,首先您的格式无效:
$format = "Y-m-d H:m:s";
表示小时、月和秒,如果你在分钟之后,你需要以下内容(你可以将此归咎于月和分钟):
$format = "Y-m-d H:i:s";
第二个问题是date_diff不接受字符串作为输入,所以你的错误也与你提供的参数相关
$dateOne = new Datetime($p1[2]);
$dateTwo = new Datetime($p2[2]);
$dateDiff = $dateOne->diff($dateTwo);
var_dump($dateDiff);
然后,您可以使用日期差异对象来查找日期差异值。
享受吧。
必须使用datetime
而不是date
。