计算yii2中两个日期之间的天数

时间:2016-12-13 06:10:26

标签: php yii2

今天我在yii2中计算两个日期之间的天数。一个日期在数据库列上。数据库列是due_date。另一个日期是当前日期。

以下是我在yii2中所做的代码:

$abc=Yii::$app->db->createCommand('select * from lib_chekout where patron_id=:patron_id   AND is_checkedin=0')
   ->bindValue(':patron_id',$patron_id)
   ->queryAll();


$datetime1 =  $abc[0]['due_date'];
$datetime2 =  date("Y-m-d H:i:s");
$interval = $datetime1->diff($datetime2);

print_r($interval);
exit;
  

我的due_date没有$ abc数组。现在我该如何计算日期?

供参考,due_date的日期为2011-08-13 00:00:00。今天的日期是2016-12-13

我该怎么做?

3 个答案:

答案 0 :(得分:2)

正如@kashif所说,你可以使用date_diff函数。首先,您需要将日期转换为DateTimeInterface,然后将其传递给date_diff

//PARA: Date Should In YYYY-MM-DD Format
//RESULT FORMAT:
// '%y Year %m Month %d Day %h Hours %i Minute %s Seconds'        =>  1 Year 3 Month 14 Day 11 Hours 49 Minute 36 Seconds
// '%y Year %m Month %d Day'                                    =>  1 Year 3 Month 14 Days
// '%m Month %d Day'                                            =>  3 Month 14 Day
// '%d Day %h Hours'                                            =>  14 Day 11 Hours
// '%d Day'                                                        =>  14 Days
// '%h Hours %i Minute %s Seconds'                                =>  11 Hours 49 Minute 36 Seconds
// '%i Minute %s Seconds'                                        =>  49 Minute 36 Seconds
// '%h Hours                                                    =>  11 Hours
// '%a Days                                                        =>  468 Days
//////////////////////////////////////////////////////////////////////
function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
{
    $datetime1 = date_create($date_1);
    $datetime2 = date_create($date_2);

    $interval = date_diff($datetime1, $datetime2);

    return $interval->format($differenceFormat);

}

来自here

答案 1 :(得分:0)

试试这种方式。 $ datetime1和$ datetime2应该是DateTime对象。

$datetime1 = new DateTime('2011-08-13 00:00:00');
//$datetime1 = new DateTime($abc[0]['due_date']);
$datetime2 = new DateTIme('Now');
$interval = $datetime1->diff($datetime2);

print_r($interval->format('%R%a'));

答案 2 :(得分:0)

DateTime :: diff - DateTimeImmutable :: diff - DateTimeInterface :: diff - date_diff - 返回两个DateTime对象之间的差异

您必须将日期字符串转换为日期时间对象

$abc = Yii::$app->db->createCommand('select * from lib_chekout where patron_id=:patron_id   AND is_checkedin=0')
        ->bindValue(':patron_id',$patron_id)
        ->queryAll();


$datetime1 =  new Datetime($abc[0]['due_date']);
$datetime2 =  new Datetime(date("Y-m-d H:i:s"));
$interval = $datetime1->diff($datetime2)->days;


print_r($interval);
exit;

Demo