0

Tag einer Kalenderwoche berechnen

Hallo,

gibt es eine Möglichkeit, beispielsweise den ersten Tag (Montag) einer bestimmten Kalenderwoche zu berechnen? Ich habe im Handbuch keine entsprechende Funktion gefunden. Hat jemand eine Idee?

Vielen Dank!

 

Beste Grüße

André

11 Antworten

null
    • Stadtbild Werbegesellschaft mbH
    • Andre_Bogatz
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Also mir fällt jetzt nur spontan der etwas umständliche Weg ein: Aktuelle Kalenderwoche mittels "week" ermitteln, den aktuellen Tag ermitteln und mittels "case" an Hand des Tages-Index das Datum des Montags der aktuellen Woche ermitteln und dann für eine andere Kalenderwoche in der Zukunft den "aktuellen Montag" mit x * 7 Tage berechnen. Das geht aber bestimmt auch einfacher, oder?

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo André, 

    ---

    today()-weekday(today())

    ---

    Leo

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Sorry, habe Die Frage erst jetzt zu ende gelesen. Angenommen KW als Zahlenwert. Dann die Formel für ein Berechnungsfeld

    ---

    let FD := date(year(today()), 1, 1);
    let myM := if weekday(FD) > 3 then FD + weekday(FD) - 1 else FD + weekday(FD) end;
    myM + KW * 7 - 7

    ---

     

    Leo

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

    Super Lösung. Meine wäre viel komplizierter gewesen.

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

    Obwohl - das funktioniert scheinbar nur in Jahren (wie 2018), wo der 1. Januar ein Montag ist. Oder?

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Sollte eigentlich in allen Jahren funktionieren. Nach ISO ist die erste KW die die ein Donnerstag beinhaltet. Deswegen die Prüfung ob der Erste Januar größer als Donnerstag(3) ist. Wenn JA dann ist der nächste Montag der erste im Jahr (FD + weekday(FD) - 1) wenn nein dann der Vorherigen (FD + weekday(FD)). Und dann die Formel für KW.

    Aber wenn ich mir es so überlege, wäre vielleicht besser Donnerstag auch mitzuberücksichtigen, also:

    let FD := date(year(today()), 1, 1);
    let myM := if weekday(FD) >= 3 then FD + weekday(FD) - 1 else FD + weekday(FD) end;
    myM + KW * 7 - 7

    Leo

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

    Ich hab's jetzt ähnlich gemacht, allerdings gleich ein numerisches Feld für das Jahr berücksichtigt (z. B. Lieferung 3. KW im nächsten Jahr), und so scheint es zu funktionieren:

    let Startdatum := date(Jahr, 1, 1);
    let Starttag := weekday(Startdatum);
    let KWStart := if Starttag > 0 then Startdatum - Starttag else Startdatum end;
    KWStart + KW * 7 - 7

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Habe bei Wikipedia nachgeschaut: "Der 4. Januar ist immer in Kalenderwoche 1." . Es wäre sinnvoll auch ein Jahr bei KW zu schreiben. Bei einem separaten Zahlenfelt  "Jahr"  wäre die Formel

    ---

    date(Jahr, 1, 4)-weekday(date(Jahr, 1, 4)+KW*7-7

    ---

    Noch einfacher geht nicht ;-)

     

    Leo

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Klammern vergessen

    date(Jahr, 1, 4)-weekday(date(Jahr, 1, 4))+KW*7-7

    Leo

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

    Perfekt! 👍

    • Stadtbild Werbegesellschaft mbH
    • Andre_Bogatz
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Genial, vielen Dank!

     

    André

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 11Antworten
  • 3619Ansichten