我使用了一些数组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);
新修改 这就是我从db获取日期时间的方式:
$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
答案 0 :(得分:1)
此代码存在一些问题,首先您的格式无效:
$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);
然后,您可以使用日期差异对象来查找日期差异值。
享受。
答案 1 :(得分:1)
正如错误所述,您还将该值从数据库表中写为字符串。因此,您需要将它们转换为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
答案 2 :(得分:0)
您必须使用datetime
而不是date
。