792 Stimmen

Ermitteln der Anzahl der Tage zwischen zwei Daten

Wie findet man die Anzahl der Tage zwischen zwei Daten mit PHP?

20voto

Balaji D Punkte 944

Einfache Verwendung von date_diff

$from=date_create(date('Y-m-d'));
$to=date_create("2013-03-15");
$diff=date_diff($to,$from);
print_r($diff);
echo $diff->format('%R%a days');

17voto

user2182143 Punkte 902

Objektorientierter Stil:

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');

Verfahrenstechnischer Stil:

$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');

12voto

Miguel Costa Punkte 389

Nun, die gewählte Antwort ist nicht die richtigste, da sie außerhalb von UTC nicht funktioniert. Abhängig von der Zeitzone ( Liste ) könnte es Zeitanpassungen geben, die Tage "ohne" 24 Stunden schaffen, wodurch die Berechnung (60*60*24) fehlschlägt.

Hier ist ein Beispiel dafür:

date_default_timezone_set('europe/lisbon');
$time1 = strtotime('2016-03-27');
$time2 = strtotime('2016-03-29');
echo floor( ($time2-$time1) /(60*60*24));
 ^-- the output will be **1**

Die richtige Lösung ist also die Verwendung von DateTime

date_default_timezone_set('europe/lisbon');
$date1 = new DateTime("2016-03-27");
$date2 = new DateTime("2016-03-29");

echo $date2->diff($date1)->format("%a");
 ^-- the output will be **2**

11voto

PHP Ferrari Punkte 14918

Benutzt das :)

$days = (strtotime($endDate) - strtotime($startDate)) / (60 * 60 * 24);
print $days;

Jetzt funktioniert es

7voto

Sie können Termine einfach finden, indem Sie

<?php
$start  = date_create('1988-08-10');
$end    = date_create(); // Current time and date
$diff   = date_diff( $start, $end );

echo 'The difference is ';
echo  $diff->y . ' years, ';
echo  $diff->m . ' months, ';
echo  $diff->d . ' days, ';
echo  $diff->h . ' hours, ';
echo  $diff->i . ' minutes, ';
echo  $diff->s . ' seconds';
// Output: The difference is 28 years, 5 months, 19 days, 20 hours, 34 minutes, 36 seconds

echo 'The difference in days : ' . $diff->days;
// Output: The difference in days : 10398

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X