NewBe: Datumsberechnung

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

  1. 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....

  2. 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";

    1. 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";

      1. 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,

        1. 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";