首页 > 解决方案 > 为什么我无法从数据库中检索日期

问题描述

好的,首先,我检查了很多关于 stackoverflow 的问题,这些问题似乎并没有解决我的问题。在你们中的一些人可能会将这个问题变成一个重复的问题之前,我能解释一下我的代码有什么问题吗?

我想计算两个日期之间的天数,并且这些日期是从数据库中检索的。以下是我所做的

if($model->save()){
    $date1 = strtotime($startDate);
    $date2 = strtotime($endDate);

    $days = ($date2 - $date1);
    $Days = ($days/(60*60*24));
    $model->no_of_days= $Days;
    $model->save();

}

$startDate并且$endDate正在从数据库中检索。当我这样编码时,结果是0.

但是,当我用日期替换它时,例如'2020-10-10'and '2020-10-13',结果是3.

我的数据库日期格式与替换日期相同。有人可以指导我并向我解释。我的代码有什么问题?

标签: phpyii2

解决方案


第一步:我建议避免使用daysDays作为变量。

第二步:验证内容$startDate$endDate使用本机var_dump函数转储它们。

var_dump($startDate);
var_dump($endDate);

如果您的数据库中的数据是“好”的,那么您应该得到正确的结果。所以我们认为你的 $startDate 和 $endDate 没有很好地初始化。


    $date1 = strtotime('2020-10-10');
    $date2 = strtotime('2020-10-13');
    $days = ($date2 - $date1);
    var_dump($days); //returns 259200
    $days = ($days/(60*60*24)); 
    var_dump($days); //returns 3

你的代码应该是:

if($model->save()){
        $date1 = strtotime($startDate);
        $date2 = strtotime($endDate);

        $days = ($date2 - $date1);
        $days = ($days/(60*60*24));
        $model->no_of_days= $days;
        $model->save();

}

第三步: 我认为你应该看看DatetimeInterval类或date_diff函数。


推荐阅读