* @version 1.1 (2016-05-06) * * Hiermit wird unentgeltlich, jeder Person, die eine Kopie dieses Skripts erhält, die Erlaubnis erteilt, * diese uneingeschränkt zu benutzen, inklusive und ohne Ausnahme, dem Recht, sie zu verwenden, zu kopieren, * zu ändern, zu fusionieren, zu verlegen, zu verbreiten, zu unterlizenzieren und/oder zu verkaufen, und * Personen, die dieses Skript erhalten, diese Rechte zu geben, unter den folgenden Bedingungen: * * Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder Teilkopien des * Skripts beizulegen. * * DAS SKRIPT WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH DER * GARANTIE ZUR BENUTZUNG FÜR DEN VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER RECHTSVERLETZUNG, * JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN * ODER SONSTIGE ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, EINES DELIKTES ODER * ANDERS IM ZUSAMMENHANG MIT DEM SKRIPT ODER SONSTIGER VERWENDUNG DES SKRIPTS ENTSTANDEN. */ /* * Liefert die Differenz zweier Datumsangaben in Jahren, Monaten und Tagen zurück. * @param int $pDate1 Erste Datumsangabe als UNIX-Zeitstempel. * @param int $pDate2 (optinal) Zweite Datumsangabe als UNIX-Zeitstempel. Wenn nichts oder 0 angegeben wird, wird * das aktuelle Datum verwendet. * @param string $pTemplate (optinal) Ein Template-String für die Ausgabe. Dabei wird %d mit der Anzahl der Tage, * %m mit der Anzahl der Monate und %y mit der Anzahl der Jahre ersetzt. Wird nichts angegeben, so wird die Vorlage * "%y Jahre, %m Monate und %d Tage" verwendet. * @return string Die Differenz der Datumsangaben gemäß der Formatierung des Template-Strings. */ function datediff_ymd($pDate1, $pDate2 = 0, $pTemplate = '%y Jahre, %m Monate und %d Tage') { /* Wenn $pDate2 nicht gesetzt wurde, auf aktuelles Datum setzen */ if ($pDate2 == 0) { $pDate2 = time(); } /* $pDate1 und $pDate2 vertauschen, wenn $pDate1 größer als $pDate2 ist */ if ($pDate1 > $pDate2) { $pDate1 ^= $pDate2 ^= $pDate1 ^= $pDate2; } /* Datumsbestandteile bestimmen */ $lDay1 = date('d', $pDate1); $lMonth1 = date('m', $pDate1); $lYear1 = date('Y', $pDate1); $lDay2 = date('d', $pDate2); $lMonth2 = date('m', $pDate2); $lYear2 = date('Y', $pDate2); /* Berechne Differenz der Tage */ $lDays = $lDay2 - $lDay1; if ($lDays < 0) { $lDays += date('t', $pDate1); $lCarry = 1; } else { $lCarry = 0; } /* Berechne Differenz der Monate */ $lMonths = $lMonth2 - $lMonth1 - $lCarry; if ($lMonths < 0) { $lMonths += 12; $lCarry = 1; } else { $lCarry = 0; } /* Berechne Differenz der Jahre */ $lYears = $lYear2 - $lYear1 - $lCarry; /* Ausgabestring anhand des Template-Strings erzeugen und zurückgeben */ return str_replace(array('%y', '%m', '%d'), array($lYears, $lMonths, $lDays), $pTemplate); } function tage($start, $ende) { $startDate = new DateTime($start); $endDate = new DateTime($ende); $diff = $startDate->diff($endDate); $tage = $diff->days; return $tage+1; } /* $datum1 = '2019-01-01'; $datum2 = '2019-06-30'; $year_start = substr($datum1,0,4); $mon_start = substr($datum1,5,2); $day_start = substr($datum1,8,2); $year_ende = substr($datum2,0,4); $mon_ende = substr($datum2,5,2); $day_ende = substr($datum2,8,2); $start = mktime(0, 0, 0, $mon_start, $day_start, $year_start); $ende = mktime(0, 0, 0, $mon_ende, $day_ende+1, $year_ende); echo datediff_ymd($start, $ende); echo "