0

Falsche Berechnung Wochentag 0-6

Seit einigen Tagen wird der Wochentag 0-6 falsch ausgegeben. 

Statt für Mittwoch, 01.05.2024 - welcher Tag 2 wäre, wird als 3 berechnet. 
Das macht natürlich bei einer 1-31 Tage Tabelle alles kaputt.
Denn jetzt stimmen die Wochentage zu dem Datum nicht mehr.
Ist das Problem schon jemanden aufgefallen oder mache ich etwas falsch? 

Die ganze Zeit lief es ohne Probleme. 
Freue mich auf Antworten.

13 Antworten

null
    • PD M
    • PD_M
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Ich nutze dafür ein Datumsfeld (Periode) und diese Berechnung: 
    format(date(year(Periode), month(Periode), 0) + 1, "d") für den Tag 1 im Monat.

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

    Hallo, mir ist nicht klar, was genau da berechnet werden soll, aber den numerischen Wochentag (0 - 6) ermittelt man mit weekday(DATUM), die Zahl des Tagesdatums mit day(DATUM). Vielleicht hilft das weiter.
     

      • PD M
      • PD_M
      • vor 6 Monaten
      • Gemeldet - anzeigen

      Hallo  , 
      der Monat soll die Tage durch 1 Datum zu 31 Tagen fassen. 
      Das heisst z.B. 

      Datumsfeld entspricht 01.05.2024 
      Tag 1 - nimmt sich Wochentagindex (0-6) in dem Fall Mittwoch also Index 2
      Tag 2 - nimmt sich Wochentagindex (0-6) in dem Fall Donnerstag also Index 3 usw bis Tag 31

      Aber die Wochentage werden falsch berechnet. 

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

       Die Funktionen format() mit "d" und weekday() unterscheiden sich. Bei format() ist der Sonntag = 0, Rückgabewert ist ein String. Bei der Funktion weekday() hingegen ist der Montag = 0, Rückgabewert ist eine Zahl.

      • PD M
      • PD_M
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Das ist mir so noch nicht aufgefallen, muss ich mal prüfen gleich, was aber komisch ist, das es die ganzen Monate ohne Problem lief und es 1:1 korrekt war. 

      Nur seit Mai nicht mehr

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

       Im Webinar-Team gibt es eine Datenbank namens 0001_Ninox-Reference. Sie enthält neben Beschreibungen aller Funktionen auch sämtliche Format-Codes.

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

      Und so stimmt es eben nicht mehr - leider. Mirko

    • mirko3
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Du hast Recht. Noch vor einiger Zeit war die Formatierung "d" von Mo 0 bis So 6 und ist jetzt auf Mo 1 bis So 0 umgestellt worden. 

    https://forum.ninox.de/t/p8hn67v/format-bei-datetime

    Dann gab es noch die Formatierung "e" die früher von Mo 1 bis So 0 ging und jetzt Mo 0 und So 6 ist. Besser kann man keine Verwirrung stiften. Und wieder mal transparent kommuniziert oder Update-bug.

    Für Dich schlage ich vor, Dein Script von "d" auf "e" zu ändern, dann stimmen Deine Ergebnisse wieder. 

      • PD M
      • PD_M
      • vor 6 Monaten
      • Gemeldet - anzeigen

       danke für deinen Tipp, das ist echt dumm jetzt, denn entweder die Zukunft stimmt oder die Vergangenheit stimmt. 
      Kann ich gleich ne neue Tabelle anlegen. Schade für die viele Arbeite die darin steckt...

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Ja, blöd. Ich freue mich schon lange nicht mehr über Updates. Mit ein wenig Glück ist es ja ein Bug und kein Feature und wird in einem der nächsten Fix geändert. Dann korrigiert sich ja wieder alles bei Dir.

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

    Also, irgendwie stehe ich jetzt auf dem Schlauch ...

     said:
    Du hast Recht. Noch vor einiger Zeit war die Formatierung "d" von Mo 0 bis So 6 und ist jetzt auf Mo 1 bis So 0 umgestellt worden. 

    Da ich "d" noch nie genutzt habe, kann ich nicht sagen, ob sich da mal was geändert hat. Aber du selbst schriebst ja schon vor einem Jahr:

    "Wie man sieht ist weekday() nur mit format(date,"e") gleichzusetzen."

    Und in der Tabelle darunter steht "d" auch für "Mo 1 bis So 0". Von daher müsste eine mögliche Änderung schon länger her sein als "jetzt"..

    Ehrlich gesagt verstehe ich aber auch das Problem gar nicht. Mit weekday() funktioniert es doch seit eh und je, beginnend bei 0 für Montag.

    weekday(date(year(Periode), month(Periode), 0) + 1)

    Und wenn es unbedingt ein String sein muss, setzt man halt noch ein text() davor.

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Na, da sollte ich mal meinen Post schnell revidieren, da ich mich ja schon damals in der ersten Tabelle verschrieben und sie in dem Nachtrag korrigiert hatte. So war es und so ist es noch. Asche und Haupt und so. Und Recht hast Du, zum Rechnen benutze ich auch weekday() da das Resultat ja gleich vom Typ number ist. Also nix Ninoxbug nur ichbug;-).  Mirko

      weekday(datum)

      Mo 0 bis So 6

      format(datum,"e")

      Mo 0 bis So 6

      format(datum,"d")

      Mo 1 bis So 0

      format(datum,"E")

      Mo 1 bis So 7

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

       Puh, dachte schon, es läge am Alter (also, an meinem) ... 😉

Content aside

  • Status Answered
  • vor 6 MonatenZuletzt aktiv
  • 13Antworten
  • 55Ansichten
  • 3 Folge bereits