Zeit zwischen 2x Datum formatiert
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angabe
auszugeben code
beispielsweise url
code
date
datum
februar
http
jahr
kleine funktion
manual
minute
monat
richtig funktionieren
schaltjahr
sekunde
tag
url
zeitabstand
zeitraum
-
Hallo
ich habe eine tag/kleine funktion">kleine Funktion
um den Abstand zwischen Datum1 und Datum2 auszugeben
// ----------------------------------------------------- function get_timediff($date1,$date2=0) { $tdate1 = strtotime($date1); if (!empty($date2)) { $tdate2 = strtotime($date2); } else { $tdate2 = time(); } if ($tdate2 < $tdate1) { $subTime = $tdate1 - $tdate2; $prefix = 'dauert noch'; } else { $subTime = $tdate2 - $tdate1; $prefix = 'vorbei seit'; } $y = floor($subTime/(60*60*24*365)); $d = ($subTime/(60*60*24))%365; $h = ($subTime/(60*60))%24; $i = ($subTime/60)%60; $s = ($subTime)%60; $xy = (1 == $y)?'Jahr':'Jahre'; $xd = (1 == $d)?'Tag':'Tage'; $xh = (1 == $h)?'Stunde':'Stunden'; $xi = (1 == $i)?'Minute':'Minuten'; $xs = (1 == $s)?'Sekunde':'Sekunden'; $tstr = '... '.$prefix.':'; if (0 < $y) { $tstr .= ' '.$y.' '.$xy; } if (0 < $d) { $tstr .= ' '.$d.' '.$xd; } if (0 < $h) { $tstr .= ' '.$h.' '.$xh; } if (0 < $i) { $tstr .= ' '.$i.' '.$xi; } if (0 < $s) { $tstr .= ' '.$s.' '.$xs; } echo $tstr; return $subTime; } // -----------------------------------------------------
wie bekomme ich da jetzt eine Angabe für Monate mit rein ?!
... so dass nicht 35 Tage sondern 1 Monat und 4 Tage kommt
ABER ... nicht jeder Monat ist gleich lang, mal 30, mal 31, mal 28/29 Tage ... ?
und evtl. auch noch Ausgabe für Wochen ?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
gameflash schrieb:
wie bekomme ich da jetzt eine Angabe für Monate mit rein ?!
Du müsstest als erstes abfragen, um welchen Monat es sich handelt. Das machst du am besten mit der date(); Funktion:
date("n", $timestamp);
Das liefert dir für den November eine 11 zurück. Das musst du jetzt für jeden Monat abfragen, der in deinem Zeitraum liegt. Nun kennst du die Länge der Monate, es sei denn, es ist der Februar dabei. Wenn der Zeitabstand den Februar einschließt, kannst als nächstes an Hand des Jahres herausfinden, ob es ein Schaltjahr ist:
date("L", $timestamp);
Das gibt "1" für ein Schaltjahr und an sonsten "0" zurück.
Damit kannst du jetzt jeweils ausrechnen, wie groß der Zeitabstand ist. Wenn du nur abstände von etwa 35 Tagen hast, sollte das so schon reichen. Wenn du unter umständen aber auch einen Zeitabstand zwischen deinen beiden Zeitpunkten von mehreren Jahren hast, müsstest du noch eine
-Schleife oder ähnliches einbauen, und dann jedes Jahr einzeln durchgehen.while() {}
Du solltest außerdem beachten, dass die Standart PHP-Zeitfunktionen nur für Daten vom 13.12.1901 20:45:54 UTC bis zum 19.01.2038 03:14:07 UTC richtig funktionieren (Quelle). Um dies zu umgehen, kannst du beispielsweise diese Funktionssammlung verwenden.
MFG THWBM -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage