Datumsberechnung
NewBe
- php
Hi,
steh' grad etwas auf dem Schlauch bei einer einfachen Datumsberechnung.
Möchte in eine MySql Datenbank ein Datum eintragen das sich wie folgt berechnet:
aktuelles Datum plus 14 Tage dann den nächsten 1ten.
also habe ich
$datum=date("Y-m-d"); /aktuelles Datum
$datum=date("Y-m-d", strtotime("$datum+14 days")); /aktuelles Datum plus 14 Tage
So weit so gut, nur wie berechne ich dann den nächsten 1ten?
Wäre klasse wenn Ihr mir weiterhelfen könnt.
Grüße,
Peter
Ach ja ganz vergessen:
falls die BErechnung plus 14 Tage zufällig genau den nächsten 1sten ergibt soll dieser Eingetragen werden und nicht noch ein Monat darauf gerechnet werden....
echo $begrüßung;
$datum=date("Y-m-d", strtotime("$datum+14 days")); /aktuelles Datum plus 14 Tage
So weit so gut, nur wie berechne ich dann den nächsten 1ten?
Prüfe ob der Tag von $datum bereits 1 ist. Wenn nicht errechne mit strtotime den 'next month' des $datums, und bilde den ersten aus Jahr, Monat und einer 1.
echo "$verabschiedung $name";
echo $begrüßung;
Prüfe ob der Tag von $datum bereits 1 ist. Wenn nicht errechne mit strtotime den 'next month' des $datums, und bilde den ersten aus Jahr, Monat und einer 1.
Nee, das klappt so nicht am Monatsende, wenn der Folgemonat weniger Tage hat. Dann teile das $datum in seine Bestandteile und füttere (gm)mktime() damit. Addiere bei der Monatszahl 1 hinzu und gib als Tag 1 an.
echo "$verabschiedung $name";
Hallo Dedlfix,
dann könnte das ganze so funktionieren:
$datum=date("Y-m-d");/aktuelles Datum
$datum=date("Y-m-d", strtotime("$datum+14 days"));/plus vierzehn Tage
list($jahr,$monat,$tag)=explode("-",$datum);
if($tag>'1')/falls plus 14 Tage nicht zufällig der 1ste des nächsten Monats
{
$monat++; /einen Monat mehr
$tag=1; / erster Tag des Monats
}
$time=mktime(0,0,0,$monat,$tag,$jahr);
$datum=date("Y-m-d",$time);
echo "Der nächste erste ist $datum";
Oder habe ich da einen Fehler drin?
Grüße,
echo $begrüßung;
Oder habe ich da einen Fehler drin?
Ich seh keine (außer dem /. Zeilenkommentare werden mit // eingeleitet), aber recht umständlich machst du das. Wenn du nur strtotime('00:00:00 +14 days') notierst, wird gleich das aktuelle Datum und einer Zeit von 0 Uhr genommen. Dann würde ich nicht über Stringbildung und -behandlung das Datum bearbeiten und so viele Zwischenvariablen braucht es auch nicht. Insgesamt komme ich auf einen Dreizeiler:
$datum = strtotime('00:00:00 +14 days');
if (date('d', $datum) != 1)
$datum = mktime(0, 0, 0, date('m', $datum) + 1, 1, date('Y', $datum));
echo "$verabschiedung $name";