2012-03-28 15 views
-1

Mögliche Duplizieren:
How to calculate the difference between two dates using PHP?PHP Finding den Unterschied zwischen Terminen

Ich habe eine PHP-Array, das Filmerscheinungsdaten in Form von "2012-04-04" als hält Beispiel. Wie würde ich den Unterschied von 2 Daten finden.

Zum Beispiel -

2012-04-04

2012-03-31

Erwartete Antwort - 5 Tage Differenz

+1

PHP> = v5.3 können Sie [ 'date_diff'] (http://php.net/manual/en/function.date-diff.php) (auch bekannt als [' Datetime :: diff () '] (http://www.php.net/manual/en/datetime.diff.php)) –

Antwort

1
$d1 = new DateTime('2012-04-04'); 
$d2 = new DateTime('2012-03-31'); 

$interval = $d1->diff($d2); 

echo $interval->format('%R%a days'); 
+0

Ive die Daten in ein Array, wie würde ich den Unterschied zwischen Array-Elemente anstelle von Variablen finden? Danke für Ihre Hilfe – user1064660

0

Ich schrieb diese Funktion eine Weile zurück, um den Unterschied zu berechnen zwischen den Daten. Es wird ein Array aller Datumsangaben zurückgegeben, die den Unterschied ausmachen.

function date_difference($date1, $date2) { 
    $seconds_count = array(
     'year' => (365 * 24 * 60 * 60), 
     'month' => (30 * 24 * 60 * 60), 
     'day' => (24 * 60 * 60), 
     'hour' => (60 * 60), 
     'minute' => 60 
    ); 

    $diff = abs($date1 - $date2); 

    $years = floor($diff/$seconds_count['year']); 
    $diff -= ($years * $seconds_count['year']); 

    $months = floor($diff/$seconds_count['month']); 
    $diff -= ($months * $seconds_count['month']); 

    $days = floor($diff/$seconds_count['day']); 
    $diff -= ($days * $seconds_count['day']); 

    $hours = floor($diff/$seconds_count['hour']); 
    $diff -= ($hours * $seconds_count['hour']); 

    $minutes = floor($diff/$seconds_count['minute']); 
    $diff -= ($minutes * $seconds_count['minute']); 

    $seconds = $diff; 

    return array('seconds' => $seconds, 'minutes' => $minutes, 'hours' => $hours, 'days' => $days, 'months' => $months, 'years' => $years); 
} 
+0

Wenn php> = 5.3.0 ' $ time_one = new DateTime ('2010-07-29 12:43 : 54 '); ' ' $ time_two = neue DateTime (' 2010-07-30 01:23:45 '); ' ' echo ($ time_one-> diff ($ time_two)); ' –

+0

Ich bin nicht auf 5.3+, so ist das, was ich verwende :) –

+0

Kory, es ist nur eine Verknüpfung = P –

0

konvertieren jedes Datum mit strtotime(), mit dem Sie einen Unix-Zeitstempel (in Sekunden) gibt. Die subtrahieren und sehen, wie viele Sekunden zwischen den beiden Daten liegen. 60 * 60 * 24 ist ein Tag im Wert von Sekunden, teilen und runden und Sie haben eine ungefähre Anzahl von Tagen.

+0

Ich würde sagen, das ist ein schlechter Rat, hat die Verwendung der Unix-Zeitstempel einige strenge Einschränkungen. Jetzt, da php ein DateTime-Objekt hat, empfehle ich dringend, es anstelle Ihres Vorschlags zu verwenden. – Bazzz

0

Was Sie tun müssen, ist, beide Daten in UTC-Format (Zeitstempel) zu verwandeln. Sie können als minus sie voneinander unterscheiden, die Ihnen den Unterschied in den Sekunden geben.

Von dort einfach in Tage konvertieren.

Differenz = Differenz/(60 * 60 * 24).

Verwandte Themen