phpbar.de logo

Mailinglisten-Archive

AW: [php] Datum - 1 Monat

AW: [php] Datum - 1 Monat

Tim Hildebrandt TConnect at gmx.net
Mit Jun 9 10:16:07 CEST 2004


Hallo Reinhold,


> Also wie komme ich problemlos von einem n-letzten Tag eines 
> Monats zum nächten n-letzten?
> 

Schau Dir mal im Manual den Befehl "date()" an. Da findest Du den Buchstaben
"j" als "Tag des Monats ohne führende Nullen". Wenn Du nun ein Datum
besitzt, das mit seinem Timestamp bekannt ist (z.B. über mktime()), dann
kannst Du auf diese Weise die Nummer des aktuellen Monats heraussuchen und
Dir gleich auch das aktuelle Jahr besorgen:

$akt_month = date("j", $timestamp);
$akt_year = date("Y", $timestamp);

Jetzt machst Du folgendes:
Du weißt, dass jeder Monat mit dem 1. beginnt. Tut's doch, oder? ;-)

Also generierst Du Dir anhand der ermittelten Daten einen neuen Timestamp
mit dem gewünschten Monat minus 1 ($akt_month - 1), und zwar den jeweils 1.
des Monats und kombinierst diesen neuen Timestamp direkt mit der
date()-Funktion:

$new_month = date("n", mktime(0, 0, 0, ($akt_month - 1), 1, $akt_year));
$last_day = date("t", mktime(0, 0, 0, ($akt_month - 1), 1, $akt_year));

Wobei "n" den momentanen Monat ohne führende Null angibt und "t" die Anzahl
der Tage in diesem Monat angiebt, also z.B. beim Februar den 28. - das ist
das, was Du wolltest.

Das ganze neue Datum könntest Du Dir auch direkt ausgeben lassen
(ISO-Format, MySQL tauglich):
$last_day = date("Y-m-t", mktime(0, 0, 0, ($akt_month - 1), 1, $akt_year));


> Gruß, Reinhold
Gruß Tim


php::bar PHP Wiki   -   Listenarchive