mysql数据库中的Datetime列在PHP中显示为String

时间:2015-06-28 12:31:07

标签: php mysql datetime

我使用了一些数组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

你能帮忙吗?提前谢谢!

3 个答案:

答案 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