Ich suche nun schon seit 'ner halben Ewigkeit danach:
Ich brauche ein Script in PHP, welches mir eine Zeitspanne zwischen dem Datum x und dem Datum y ausgibt und zwar nicht in Sekunden (das wäre ja leicht mit dem Timestamp zu erreichen) sondern in Jahren, Monaten und Tagen.
Ich suche nun schon seit 'ner halben Ewigkeit danach:
Ich brauche ein Script in PHP, welches mir eine Zeitspanne
zwischen dem Datum x und dem Datum y ausgibt und zwar nicht in
Sekunden (das wäre ja leicht mit dem Timestamp zu erreichen)
sondern in Jahren, Monaten und Tagen.
warum schreibst Du Dir dann nicht einfach selbst eins?
Dann kannst Du sogar noch alle Finessen einbauen, die Du gerne noch reinhaben willst…
Wir haben heute den 17. September. Eine Zeitspanne von drei Monaten und 20 Tagen kann bedeuten:
Ein Monat bedeutet dreißig Tage, das wären also 110 Tage, damit wären wir beim 5. Januar 2010.
Zum heutigen Datum 20 Tage dazu und dann die Monatszahl noch um 3 vergrößern. Dann wären wir beim 7. Januar.
Oder die Monatszahl des heutigen Datums um 3 vergrößern und dann noch 20 Tage dazu. Das wäre dann der 6. Januar.
Ich nehme mal an dass du die dritte Variante meinst.
Die Berechnung erfolgt wie bei schriftlicher Division. Allerdings weiß man da dass man bei „7 - 9“ „17 - 9“ zu rechnen hat, man erhält 8 merke 1.
Wenn man mit Tagen rechnet, muss man allerdings beachten, wie viel Tage der vorletzte Monat im Zeitraum hat. Ist das ein Januar (wie im Beispiel), dann bedeutet „12 - 29“ „(12 + 31) - 29“ und man bekommt 14 merke 1. Ist der vorletzte Monat dagegen ein Februar, so muss man rechnen „(12 + 28) - 29“ und erhält 11 merke 1. Falls das jetzt aber ein Schaltjahr ist…
$datum1 = '29.03.2008';
$datum2 = '12.02.2009';
$da1 = explode('.',$datum1);
$da2 = explode('.',$datum2);
//Daten tauschen, wenn Datum 1 nach Datum 2 liegt.
if ($da2[2].$da2[1].$da2[0] ";
echo "Monate: ".$monate."
";
echo "Jahre: ".$jahre."
";
Ich nehme mal an dass du die dritte Variante meinst.
Die Berechnung erfolgt wie bei schriftlicher Division.
Allerdings weiß man da dass man bei „7 - 9“ „17 - 9“ zu
rechnen hat, man erhält 8 merke 1.
Wenn man mit Tagen rechnet, muss man allerdings beachten, wie
viel Tage der vorletzte Monat im Zeitraum hat. Ist das ein
Januar (wie im Beispiel), dann bedeutet „12 - 29“ „(12 + 31) -
29“ und man bekommt 14 merke 1. Ist der vorletzte Monat
dagegen ein Februar, so muss man rechnen „(12 + 28) - 29“ und
erhält 11 merke 1. Falls das jetzt aber ein Schaltjahr ist…
//Daten tauschen, wenn Datum 1 nach Datum 2 liegt.
if ($da2[2].$da2[1].$da2[0] ";
echo "Monate: „.$monate.“
";
echo "Jahre: „.$jahre.“
";
Johannes
Hi^^
Ja genau - die dritte habe ich gemeint. An die anderen habe ich gar nicht gedacht… sorry
Also erst mal DANKE!!! Es funktioniert.
Ich hatte schon rumexperimentiert und bin auf ein ähnliches Script gekommen aber es hat mir genau hier gefehlt:
Wir haben heute den 17. September. Eine Zeitspanne von drei
Monaten und 20 Tagen kann bedeuten:
Ein Monat bedeutet dreißig Tage, das wären also 110 Tage,
damit wären wir beim 5. Januar 2010.
Zum heutigen Datum 20 Tage dazu und dann die Monatszahl noch
um 3 vergrößern. Dann wären wir beim 7. Januar.
Oder die Monatszahl des heutigen Datums um 3 vergrößern und
dann noch 20 Tage dazu. Das wäre dann der 6. Januar.
Ich nehme mal an dass du die dritte Variante meinst.
Die Berechnung erfolgt wie bei schriftlicher Division.
Allerdings weiß man da dass man bei „7 - 9“ „17 - 9“ zu
rechnen hat, man erhält 8 merke 1.
Wenn man mit Tagen rechnet, muss man allerdings beachten, wie
viel Tage der vorletzte Monat im Zeitraum hat. Ist das ein
Januar (wie im Beispiel), dann bedeutet „12 - 29“ „(12 + 31) -
29“ und man bekommt 14 merke 1. Ist der vorletzte Monat
dagegen ein Februar, so muss man rechnen „(12 + 28) - 29“ und
erhält 11 merke 1. Falls das jetzt aber ein Schaltjahr ist…
Das Problem ist leicht zu lösen, z.B. in dem man die Zeile
if ($tage verdoppelt.
> 31.01.2009 - 28.03.2009
> Tage: 25
> Monate: 1
> Jahre: 0
Hier stellt sich die Frage was eigentlich die richtige Lösung ist.
Man könnte sagen von Ende Januar bis Ende Februar (also bis zum 28.) sind es zwei Monate, und dann kommen noch 28 März-Tage.
Aber was macht man z.B. bei 29.01.2009 - 28.03.2009?
Sind das auch ein Monat und 28 Tage? Oder doch eher ein Monat und 30 Tage?
Ich weiß es nicht.
Johannes