2016-12-13 9 views
0

Heute zähle ich Tage zwischen zwei Daten in yii2. Ein Datum befindet sich in der Spalte der Datenbank. Datenbankspalte ist Fälligkeitsdatum. Das andere Datum ist das aktuelle Datum. HierZähle Tage zwischen zwei Daten in yii2

ist der Code für das, was ich bisher getan in 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; 

Mein DUE_DATE ist kein $ abc-Array. Wie kann ich die Daten zählen?

Als Referenz hat due_date das Datum 2011-08-13 00:00:00. Und heute ist das Datum 2016-12-13.

Wie kann ich es tun?

+0

Verwendung date_diff ($ date1, $ date2); – kashif

+0

Fehler: PHP Warnung 'yii \ base \ ErrorException' mit Nachricht 'date_diff() erwartet Parameter 1 DateTimeInterface, String' –

+0

$ date1 und $ date2 muss im Datumsformat sein $ date1 = strtotime ($ date1); $ date2 = strtotime ($ date2); – kashif

Antwort

1

als @ kashif sagte, dass Sie date_diff Funktion verwenden können. Zuerst müssen Sie das Datum in DateTimeInterface konvertieren und dann an date_diff übergeben.

//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); 

} 

von here

0

auf diese Weise versuchen. $ datetime1 und $ datetime2 sollten DateTime-Objekt sein.

$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')); 
0

Datetime :: diff - DateTimeImmutable :: diff - DateTimeInterface :: diff - date_diff - Liefert die Differenz zwischen zwei Datetime-Objekte

Sie müssen Ihr Datum Zeichenfolge in Datetime-Objekt

konvertieren
$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

Verwandte Themen