簡體   English   中英

計算yii2中兩個日期之間的天數

[英]Count days between two dates in 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月13日。

我該怎么做 ?

正如@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);

}

這里

嘗試這種方式。 $ 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'));

DateTime :: diff-DateTimeImmutable :: diff-DateTimeInterface :: diff-date_diff —返回兩個DateTime對象之間的差

您必須將日期字符串轉換為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;

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM