Timestamp + Tage Addieren

proloser

Erfahrenes Mitglied
Hallo,

ich hab folgendes Problem ...

... ich lesen aus einer Datenbank eine Timestamp und addiere 30 Tage und speichere ihn wieder in der Datenbank, das funktioniert auch aber wiederhole ich das ein paar mal stimmt das Datum um 1 Tag nicht mehr, an was kann das liegen?

PHP:
$timestamp = 1195858800;

$myDate = date("d.m.y",$timestamp);
$ar = explode (".", $myDate); 

$laufzeit= mktime(0,0,0, $ar[1], $ar[0] + 30, $ar[2]); 

echo $laufzeit;

Gruß proloser
 
Es ist einfacher, wenn du dem Unix-Zeitstempel die entsprechende Sekundenanzahl addierst:
PHP:
$timestamp + (30*86400)
 
Manche Monate haben 30, manche aber auch 31 oder sogar nur 28 / 29 Tage. Du jedoch gehst immer von 30 Tagen aus. Die Funktion [phpf]mktime[/phpf] reguliert "überstehende" Werte ganz gut, jedoch auch nur in dem Maße, wie ihr die Werte übergeben werden. Gehen wir zB vom 30. September aus, haben wir anschließend den 30. Oktober, dann aber den 29. November, 29. Dezember, 28. Januar, ...

Des Weiteren wäre es einfacher, einfach 30 * 84600 zum Unixtimestamp zu addieren, wenn es um genau 30 Tage geht. Noch sinnvoller und einfacher wäre aber in der MySQL Tabelle Spalten vom Typ DateTime zu verwenden, denn damit sind Operationen wie
SQL:
UPDATE
    `table`
SET
    `dateline` = DATE_ADD( `dateline`, INTERVAL 1 MONTH )
;
relativ simpel und schnell erledigt.
 
Zurück