2016-10-03 5 views
0

ich die Berechnung der Differenz von zwei Daten wie folgt abrunden:PHP - Wie kann ich das Datum

$date1= $_POST['dob']; 
$date2= $_POST['dor']; 

$date1 = date_create($date1); 
$date2 = date_create($date2); 


$diff = $date1->diff($date2); 
echo "<p> The difference is " . $diff->format('%y Years, %m month, %d days') . "</p>"; 

Nun möchte ich den Unterschied zum Beispiel runden, wenn die Differenz berechnet wird als:

40 Jahre, 0 Monate, 01 Tage

Ich möchte, dass dies als '41 Jahre 'behandelt wird. Alles, was über das Jahr hinausgeht, wird es zu einer Zusammenfassung bringen.

Irgendwelche Lösungen?

+0

Wie kann es 41 Jahre sein? Wann ist es nur ein Tag mehr als im Vorjahr? Was versuchst du eigentlich? –

Antwort

2

Genau prüfen, ob es einen Monat oder einen Tag, und wenn es nur ein Jahr hinzuzufügen ist:

//..... 
$diff = $date1->diff($date2); 
$year = (int) $diff->format('%y'); 
if (((int)$diff->format('%m')) || ((int)$diff->format('%d'))) { 
    $year++; 
} 

echo "<p> The difference is " . $year . " years </p>"; 
+0

Hallo nospor, danke, das hat perfekt für mich funktioniert. – Majid

+0

Sie sind herzlich willkommen :) – nospor

0

dies versuchen, erhalten Tage aus verschiedenen Datum und teilen mit 365 (1 Jahr) und ceil (Runde Brüche nach oben) zu geteilten Tagen.

$date1 = "2016-04-05"; 
$date2 = "2088-05-05"; 
$date1 = date_create($date1); 
$date2 = date_create($date2); 

$diff = $date1->diff($date2); 
//var_dump($diff); 
$years = $diff->y; 
$moths = $diff->m; 
$days = $diff->d; 
$hour = $diff->h; 
$minits = $diff->i; 
$second = $diff->s; 
if($moths > 0 || $days > 0 || $hour > 0 || $minits > 0 || $second > 0) 
{ 
    $years++; 
} 
echo "<p> The difference is " . $years . " years </p>"; 

DEMO

+0

Dave einige Jahre haben 366 Tage, so dass Sie falsche Ergebnisse haben werden – nospor

+0

@nospor: Danke für die Korrektur mich – Dave

+0

Gern geschehen :) – nospor

Verwandte Themen