Datum berechnen

brainsucker

Erfahrenes Mitglied
Guten Abend,

ich hänge zur Zeit an folgendem Problem und hoffe hier bei Euch Hilfe zu finden:

Ich möchte zwischen einem Startzeitpunkt und einem Endzeitpunkt bestimmte Daten ausgeben. Start und Ende liegen jeweils als Timestamp vor.

Folgendes Beispiel soll mein Problem verdeutlichen:

Beginn: 17.12.2207 (liegt als Tiemstamp vor)
Ende 17.12.2009 (liegt als Tiemstamp vor)

Das Script welches ich versuche zu schreiben soll nun ausgehend vom Anfangsdatum jeweils immer den Timestamp + 1 Monat ausgeben. Also: 17.01.2008;17.02.2008;17.03.2008(...);17.11.2009;17.12.2009


Wie könnte ich dass denn anstellen?
 
mit mktime, du kannst im monatswert einfach hochzählen und den rest macht er schon richtig.

PHP:
<?
$start  = mktime(0,0,0,1,17,2007);
$end    = mktime(0,0,0,1,17,2009);
$i      = 0;

while (($current = mktime(0,0,0,date('m',$start)+$i++,date('d',$start),date('y',$start))) < $end){
    echo date("d.m.Y\n",$current);
}
?>
 
Hallo Engel,

vielen Dank dür deine Hilfe. Das funktioniert so weit. Eine Frage hätte ich trotzdem noch:

Wenn ich jetzt möchte dass er mir anstatt jeden Monat, jeden zweiten, oder jeden dritten Monat ausgibt

(Bsp:

1.1.2008
1.4.2008
1.7.2008
etc
)

wie müsste ich das entsprechend ändern?

Ich hab $i = 3 gesetzt, aber das macht er nur beim ersten mal korrekt, danach zählt er wieder jeweils 1 Monat hoch.
 
PHP:
while (($current = mktime(0,0,0,date('m',$start)+$i++,date('d',$start),date('y',$start))) < $end){
    echo date("d.m.Y\n",$current);
}

Da das
PHP:
i++
in
PHP:
i+=2
oder
PHP:
i+=3
oder sonstwas ändern.

Gruß Galaxy
 
Zuletzt bearbeitet:
An der Stelle wo $i++ in der whileschleife steht ,)

Wenn du es noch weiter beeinflussen willst währe es wohl besser das ganze ein wenig weiter auseinander zunehmen.

Ein kleiner Fix damit es auch in anderen Schritten geht währe $i++ mit $i+=*WERT* zu tauschen, und dann würds so aussehen:

PHP:
<?
$start  = mktime(0,0,0,1,17,2007);
$end    = mktime(0,0,0,1,17,2009);
$step   = 3;
$i      = 1 - $step;

while (($current = mktime(0,0,0,date('m',$start)+$i+=$step,date('d',$start),date('y',$start))) < $end){
    echo date("d.m.Y\n",$current);
}
?>
 
Zurück