2016-10-12 3 views
1

Im Versuch, den Unterschied zwischen zwei Terminen zurück, ich arbeite nach dem example found on stackoverflowphp vergleichen Differenz zwischen zwei Daten

Mein Problem? Ich bekomme völlig falsche Ergebnisse zurück, der folgende Code gibt 30 Jahre, 0 Monate, 9 Tage zurück, wenn es offensichtlich nur 7 Tage oder 1 Woche sein sollte.

-Code folgt unten:

date_default_timezone_set('America/Los_Angeles'); 

    $pickupDate = '2016-10-13'; 
    $returnDate = 2016-10-20; 

    $diff = abs(strtotime($pickupDate) - strtotime($returnDate)); 
    $years = floor($diff/(365*60*60*24)); 
    $months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24)); 
    $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 

    printf("%d years, %d months, %d days\n", $years, $months, $days); 

Jede Eingabe

geschätzt
+0

Verwenden Sie die eingebauten Datumsfunktionen von PHP, machen Sie keine naiven Stunden * Tage Berechnungen. – Dai

Antwort

1

nur Apostroph im Gegenzug Datum wie $returnDate = '2016-10-20'; setzen und Sie date_diff() Funktion von PHP verwenden können wie,

$daysdiffernce = date_diff(date_create('2016-10-13'),date_create('2016-10-20')); 
echo $daysdiffernce->format("%R%a days"); 

und dies wird geben genau + 7 Tage Antwort

+0

lass es mich wissen, wenn es nicht für dich funktioniert hat ??? –

+0

Arbeitete wie ein Charme; jeden Tag lernst du etwas neues 'date_diff()' Danke –

1

Zuerst wird der Code braucht nicht in Jahren Rechnung Sprung, unterschiedlicher Länge der Monate und solche Dinge.

Es gibt tatsächlich eine Funktion in PHP für diese, bitte auf den Link für Details überprüfen: http://php.net/manual/en/datetime.diff.php, und ein Beispiel genommen:

$datetime1 = new DateTime('2016-10-13'); 
$datetime2 = new DateTime('2016-10-20'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%y years, %m months, %d days'); 
1

die Sie interessieren, wird es Ihnen Datum unterscheiden, und die Zeit, Minuten, Stunden, zweite und usw.

date_default_timezone_set('America/Los_Angeles'); 
$now = '2016-10-13'; 
$returnDate = '2016-10-20'; 
$start = date_create($returnDate); 
$end = date_create($now); 
$diff=date_diff($end,$start); 
print_r($diff); 

DEMO

1
date_default_timezone_set('America/Los_Angeles'); 

$pickupDate = '2016-10-13'; 
$returnDate = '2016-10-20'; //use signle quote same as pickupDate 

$diff = abs(strtotime($returnDate) - strtotime($pickupDate)); // change the order 
$years = floor($diff/(365*60*60*24)); 
$months = floor(($diff - $years * 365*60*60*24)/(30*60*60*24)); 
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 

printf("%d years, %d months, %d days\n", $years, $months, $days); 

Dank

Verwandte Themen