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 JahrenThu, November 29, 2018 at 4:52 PM UTC
    • 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 JahrenThu, November 29, 2018 at 7:50 PM UTC
    • Gemeldet - anzeigen

    Hallo André, 

    ---

    today()-weekday(today())

    ---

    Leo

    • Leonid_Semik
    • vor 6 JahrenFri, November 30, 2018 at 6:12 AM UTC
    • 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 JahrenFri, November 30, 2018 at 6:59 AM UTC
    • Gemeldet - anzeigen

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

    • Ninox-Professional
    • planoxpro
    • vor 6 JahrenFri, November 30, 2018 at 7:40 AM UTC
    • Gemeldet - anzeigen

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

    • Leonid_Semik
    • vor 6 JahrenFri, November 30, 2018 at 8:27 AM UTC
    • 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 JahrenFri, November 30, 2018 at 9:04 AM UTC
    • 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 JahrenFri, November 30, 2018 at 9:10 AM UTC
    • 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 JahrenFri, November 30, 2018 at 9:10 AM UTC
    • Gemeldet - anzeigen

    Klammern vergessen

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

    Leo

    • Ninox-Professional
    • planoxpro
    • vor 6 JahrenFri, November 30, 2018 at 10:01 AM UTC
    • Gemeldet - anzeigen

    Perfekt! 👍

    • Stadtbild Werbegesellschaft mbH
    • Andre_Bogatz
    • vor 6 JahrenFri, November 30, 2018 at 12:46 PM UTC
    • Gemeldet - anzeigen

    Genial, vielen Dank!

     

    André

Content aside

  • vor 6 JahrenFri, November 30, 2018 at 12:46 PM UTCZuletzt aktiv
  • 11Antworten
  • 3664Ansichten