Bastian: Erster und letzter Tag eines gegebenen Monats

Guten Morgen,

Wenn ich einen Monat und ein Jahr vorgegeben habe, gelingt es mir, den letzten Tag zu bestimmen, aber nicht den ersten Tag. Obwohl das ja immer der 1. des Monats sein sollte.

    $d = new DateTime("$Year-$month");
    $lastday = $d->format('Y-m-t');
    $firstday = $d->format('Y-m-w');

Ich dachte eigentlich, mit der w-Option würde das gemacht, aber da erhalte ich für Juni22 den 3.Juni als vermeintlich ersten Tag.

Gibt es anlalog zur t-Option (letzer Tag) sowas nicht für den ersten Tag des Monats?

Bastian

  1. Moin,

    Ich dachte eigentlich, mit der w-Option würde das gemacht, aber da erhalte ich für Juni22 den 3.Juni als vermeintlich ersten Tag.

    nein, w gibt die Nummer des Wochentags aus und der 1.6. war dieses Jahr ein Mittwoch, deswegen die 3.

    Gibt es anlalog zur t-Option (letzer Tag) sowas nicht für den ersten Tag des Monats?

    Nein, wozu? Verwende einfach $d->format('Y-m-01'); oder Y-m-d da das DateTime-Objekt ohnehin den 1.6. enthält.

    Gruß
    Tobias

    1. Hallo,

      Gibt es anlalog zur t-Option (letzer Tag) sowas nicht für den ersten Tag des Monats?

      Nein, wozu?

      Ergänzend dazu: genau genommen liefert die t-Option nicht den letzten Tag, sondern die Anzahl Tage im Monat …

      Gruß
      Kalk

    2. Hallo TK, hallo Martin,

      Nein, wozu? Verwende einfach $d->format('Y-m-01'); oder Y-m-d da das DateTime-Objekt ohnehin den 1.6. enthält.

      Der Juni 2022 begann mit einem Mittwoch, also 3. Wie wär's mit d? In deinem Date-Objekt hast du ja sowieso schon den 1. des Monats

      Dank an Euch für die Erklärung.

      Anschließend daran eine mysql-Frage.
      Wenn ich die beiden Daten nun in einer mysql-Query nutze, werden sie dann inbegriffen oder nicht?

      Also BETWEEN $firstdate AND $lastdate beinhaltet den ersten und letzten Tag oder genau die Tage dazwischen?

      Bastian

      1. Hallo,

        Dank an Euch für die Erklärung.

        Anschließend daran eine mysql-Frage.
        Wenn ich die beiden Daten nun in einer mysql-Query nutze, werden sie dann inbegriffen oder nicht?

        selbst nachschlagen ist nicht so dein Ding, oder?

        Also BETWEEN $firstdate AND $lastdate beinhaltet den ersten und letzten Tag oder genau die Tage dazwischen?

        Dann nehmen wir uns doch mal das Handbuch vor:

        If expr is greater than or equal to min and expr is less than or equal to max, BETWEEN returns 1

        Größer oder gleich min, und kleiner oder gleich max. Die Grenzen sind also inclusive.
        Warum kannst du sowas nicht mal schnell selbst recherchieren?

        Einen schönen Tag noch
         Martin

        --
        Nein, Esel sind nicht störrisch. Sie wissen es einfach nur besser.
        1. Hallo Martin,

          Größer oder gleich min, und kleiner oder gleich max. Die Grenzen sind also inclusive.

          Warum kannst du sowas nicht mal schnell selbst recherchieren?

          Das ist so wenig kommunikativ. 😉
          Spaß beiseite.
          Danke fürs beantworten.

          Bastian

      2. Moin Bastian,

        Anschließend daran eine mysql-Frage.
        Wenn ich die beiden Daten nun in einer mysql-Query nutze, werden sie dann inbegriffen oder nicht?

        Also BETWEEN $firstdate AND $lastdate beinhaltet den ersten und letzten Tag oder genau die Tage dazwischen?

        also eigentlich möchtest du wissen, ob der Monat passt, nicht wahr?

        Viele Grüße
        Robert

        1. Hallo Robert,

          Also BETWEEN $firstdate AND $lastdate beinhaltet den ersten und letzten Tag oder genau die Tage dazwischen?

          also eigentlich möchtest du wissen, ob der Monat passt, nicht wahr?

          erstaunlich, wieviel man vom Wald sieht, wenn man mal nicht so sehr auf die Bäume achtet! 😉

          Einen schönen Tag noch
           Martin

          --
          Nein, Esel sind nicht störrisch. Sie wissen es einfach nur besser.
          1. Moin Martin,

            erstaunlich, wieviel man vom Wald sieht, wenn man mal nicht so sehr auf die Bäume achtet! 😉

            Landschaftsgärtnern ist eben ein eigener Beruf 😉

            (Wenn man sich näher mit SQL-Datenbanken beschäftigt und herausfindet, dass es häufig weniger externen Code benötigt und auch noch performanter ist, relationale Algebra und SQL-Funktionen direkt einzusetzen.)

            Schönes Wochenende
            Robert

        2. Hallo Robert,

          also eigentlich möchtest du wissen, ob der Monat passt, nicht wahr?

          Habs grad erst gelesen, daher erst jetzt ein Dank an Dich 😉

          Bastian

  2. Hallo,

    Wenn ich einen Monat und ein Jahr vorgegeben habe, gelingt es mir, den letzten Tag zu bestimmen

    ach ja? Da musste ich jetzt erst recherchieren - spontan hätte ich das nicht gewusst.

    aber nicht den ersten Tag. Obwohl das ja immer der 1. des Monats sein sollte.

    Genau, der 1. des Monats ist immer der 1. - ich verstehe daher nicht, was du wirklich suchst.

        $d = new DateTime("$Year-$month");
        $lastday = $d->format('Y-m-t');
        $firstday = $d->format('Y-m-w');
    

    Dein $lastday stimmt "zufällig". Der Format-Parameter t gibt die Anzahl der Tage des Monats an. Da die Tage ab 1 gezählt werden, ist das gleichzeitig auch die laufende Nummer des letzten Tages. Dagegen gibt w ("weekday") den Wochentag an: 0 für Sonntag, 6 für Samstag.

    Ich dachte eigentlich, mit der w-Option würde das gemacht, aber da erhalte ich für Juni22 den 3.Juni als vermeintlich ersten Tag.

    Der Juni 2022 begann mit einem Mittwoch, also 3.

    Gibt es anlalog zur t-Option (letzer Tag) sowas nicht für den ersten Tag des Monats?

    Wie wär's mit d? In deinem Date-Objekt hast du ja sowieso schon den 1. des Monats.

    Einen schönen Tag noch
     Martin

    --
    Nein, Esel sind nicht störrisch. Sie wissen es einfach nur besser.