0

Wie berechne ich das Datum des letzten Tag eines Monats?

Hi,

ich möchte eine Variable, die einen monatlichen Zahlungstermin beschreibt noch etwas genauer definieren.

Aktuell sieht die Variable so aus:

myDate := date(year(myDate), month(myDate) + 1, day(myDate)

Das funktioniert für die Tage 1 - 28 sehr gut, bei den Tagen 29 bis 31 wird es dann aber wieder schwierig.

Vielen Dank,

Frederik

4 Antworten

null
    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Frederik,

     

    date(year(Datum), month(Datum),0)

     

    verweist auf den Monatsletzten des Vormonats. Wenn bspw. Datum = 6.3.2020 wäre das Ergebnis 29.02.2020.

     

    lg, Torsten

    • FBHB
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Torsten,

    die Formel habe ich auch schon gesehen. Das passt aber leider nicht ganz zu der Anwendung. Wenn das erste Datum der 6.3.2020 ist, soll das folgende Datum der 6.4.2020 sein. (Fall 1)

    Wenn das erste Datum der 31.1.2020 ist, soll das folgende Datum der 28.2.2020 sein. (Fall 2)

    Mit deiner Formel komme ich also vielleicht bei Fall 2 weiter, aber nicht bei Fall 1.

    Gibt es dafür eine charmante Lösung? Falls es sehr kompliziert wird, kann ich auch drauf verzichten und in diesem Feld einfach keine Daten größer 28 angeben. Es ist nur so, dass jeder Anbieter an einem anderem Tag abbucht und manche halt immer am Monatsende. Genaugenommen am letzten Wochentag des Monats aber das führt dann wirklich zu weit.

     

    Grüße,

    Frederik

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Folgemonat und letzter Werktag(?) ließen sich auch noch ergänzen. Wobei ich der Einfachheit halber die Grenze bei 27 setzen würde:

    let nextDate := if day(Datum) > 27 then
            date(year(Datum), month(Datum) + 2, 0)
        else
            date(year(Datum), month(Datum) + 1, day(Datum))
        end;
    if weekday(nextDate) > 4 then
        if weekday(nextDate) > 5 then
            nextDate := nextDate - 2
        else
            nextDate := nextDate - 1
        end
    end;
    nextDate

    • FBHB
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Super, danke!

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 4Antworten
  • 1751Ansichten