0

Datum eines bestimmten Tages einer KW

Es geht um eine Anzeigenblattverwaltung. Hier habe ich die KW (z.B. 11)vorgegeben und den Erscheinungswochentag (Samstag). Es gibt pro Woche eine Ausgabe und ich möchte gerne das Erscheinungdatum jeder Ausgabe haben. Also Samstag 20. März 2021.
Der "weekday" wäre 6. Aber wie komme ich dann zum Datum ???

11 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Wolfgang, man könnte den ersten Samstag des Jahres ermitteln und dieses Datum für jede Woche um 7 Tage erhöhen. Dabei wäre allerdings der Sonderfall zu berücksichtigen, dass der erste Samstag des Jahres auf den 1. oder 2. Januar fällt, denn dann wird er ja noch der letzten Kalenderwoche des Vorjahres zugeordnet. Folgender Code ist nicht besonders elegant, könnte aber funktionieren:

     

    let myJahr := 2021;
    let myStart := date(myJahr, 1, 1);
    if weekday(myStart) = 5 then myStart := myStart + 7 end;
    while weekday(myStart) != 5 do
       myStart := myStart + 1
    end;
    if week(myStart) > 1 then myStart := myStart + 7 end;
    myStart + (KW - 1) * 7

     

    Wobei "KW" das numerische Feld mit der vorgegebenen Kalenderwoche wäre. Und die Variable "myJahr" könnte natürlich auch automatisch aus einem Datenfeld befüllt werden.

    • Wegener & Hinz GmbH
    • green_cup
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich wähle im Formular ein Datum (Kalenderfeld) und über die damit ausgewählte KW bilde ich die einzelnen Daten

    der Wochentage:

    z.B. Montag:

    let FD := date(year('Datum*'), 1, 1);   >>>>>>>>Datum*........Kalenderfeld ausgewählt
    let myM := if weekday(FD) > 3 then FD + weekday(FD) - 1 else FD + weekday(FD) end;
    myM + 'KW*' * 7 - 7 >>>>>>>>>Datum vom Montag

    z.B. Samstag:

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

     

    vielleicht kann man ja damit was anfangen

    • Wolfgang_Bangert
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke für die tollen Skripte. Für 2021 funktionieren beide. Bei 2022 nur das von Axel. Ich bin aber noch nicht darauf gekommen, warum. Auf jeden Fall kann ich weitermachen und es war mir eine große Hilfe...

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

    Das Skript sollte m. E. in jedem Jahr korrekt funktionieren. Der erste Samstag wird halt immer für das angegebene Jahr (myJahr) ermittelt. Dann muss aber auch noch die Kalenderwoche geprüft werden, weil es genau genommen ja um den Samstag der ersten Kalenderwoche geht. Dadurch wird es halt ein bisschen komplizierter. Hat man das betreffende Datum aber erst mal korrekt berechnet, kann man für jede weitere Kalenderwoche (KW) einfach 7 Tage dazurechnen.

    • Wolfgang_Bangert
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ...das heiss aber auch, dass die Anzahl der KW´s des angegebenen Jahr (myJahr) von mir ermittelt werden müssen. 

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

    Nein, wozu? Du schriebst ja oben, dass du die KW als Zahl vorgibst, zum Beispiel 11. Daraus wolltest du automatisch das Datum des Samstags der 11. Kalenderwoche berechnen. Genau das macht das Skript. Als Parameter benötigt es neben besagter KW aber natürlich immer auch ein Jahr. Auf dieser Grundlage wird immer zunächst der Samstag der ersten Kalenderwoche des betreffenden Jahres ermittelt und die entsprechende Anzahl von Tagen hinzuaddiert.

    • Wolfgang_Bangert
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ja stimmt. Ich meinte nur, dass ich beim Anlegen der einzelnen Ausgaben wissen muss, wiviele KW´s ein Jahr hat. Dieses Problem habe ich noch nicht gelöst. Dein Skript funktioniert perfekt!
    Hast Du vielleicht eine Idee, wie ich herausfinden kann, wieviele KW´s ein Kalenderjahr hat ?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    man kann es mit

    week(date(DEINJAHR,12,31))

    versuchen

    Grüße Leo

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

    Ja, das wäre logisch. Leider schlägt auch hier wieder der Datumsfehlerteufel zu. Für 2024, wo das Jahr am Sonntag endet, ist das Ergebnis der Formel "1". Wieso auch immer ...

     

    Allerdings stellt sich sowieso die Frage, wozu genau die letzte KW benötigt wird. Sollen die Daten automatisch für ein Jahr im Voraus generiert werden? Hier wäre etwas Kontext zur geplanten Vorgehensweise hilfreich.

    • Wolfgang_Bangert
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ja, Axel sehr gerne hier die Erklärung:
    Jede Woche erscheint ein Amtsblatt. Dieses Amtsblatt hat einen bestimmten Tag in der Woche (hier im Beispiel Samstag). 
    Ich lege für jedes Amtsblatt einen Datensatz (Einzel-Ausgabe) an. Mit diesem Datensatz verknüpfe ich die Anzeigen, die dafür gebucht werden.
    Um dies zu tun, muss ich wissen, wieviele Kalenderwochen ein Jahr hat.
    Das Datum brauch ich, weil ich auf der Rechnug neben dem REchnungsdatum auch das Leistungsdatum angeben muss und das ist der Tag der Ausgabe.

    Mit der Formel von Leo, ganz herzlichen dank dafür Leo..., klappt das nun wunderbar. In 2024 ist der 31.12.2024 korrekterweise KW 1, allerdings vom Folgerjahr. Aber das passt. Ich muss hier nur noch das Jahr um eins hochsetzen. Das würde ich so lösen, wenn 31.12.20XX = 1 then <nächstes Jahr>...

    Wir machen übrigens alle unsere Kalender (Werbekalender für Banken) auf Grundlage von Ninox. War letztes Jahr ne Menge Arbeit, aber dieses Jahr quasi nur ein Knopfdruck.
    Schönen Sonntag Euch
    Wolfgang

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

    👍

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 11Antworten
  • 834Ansichten