0

Problem mit Datumsberechnung - 31.10.2021 doppelt?

Hallo, 

ich habe ein Problem bei der Datumsberechnung:

Bei der Berechnung 31.10.2021 + 1 kommt als Ergebnis 31.10.2021 raus und nicht 1.11.2021. Erst wenn ich noch einen weiteren Tag dazurechne kommt der 1.11.2021 raus. Es schein so zu sein, dass der 31.10.2021 doppelt vorkommt. 

Das Problem taucht in einer Berechnung von Urlaubstagen auf. Bei der Berechnung der Urlaubstage eines Urlaubs von Okober bis in den November wird so ein Urlaubstag zu wenig angezeigt. 

Hat jemand eine Idee wie ich das Problem lösen kann oder ist es ein Bug in Ninox? 

Viele Grüße

Moritz Muras

5 Antworten

null
    • Selbständig
    • Fabian_Wieland
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Moritz,

    den Bug habe ich auch schon dem Ninox-Support berichtet. Ist wohl Bestandteil der seit geraumer Zeit ungelösten (obwohl für viele sehr dringlichen) Datum/Zeit-Problematik.

    Kurz: Ist auf der Ninox-Agenda und hoffentlich sehr bald gelöst. Aber schreib gerne nochmal dem Support (support@ninox.com), damit da mehr Dringlichkeit aufgebaut wird. Das ist nämlich nicht das einzige Problem in diesem Zusammenhang.

    VG

    Fabian

    • Wohnungshilfe Bremen e.V.
    • Administrator.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Fabian, 

    vielen Dank für deinen Hinweis. Ich schicke es auch noch einmal an den Support. 

    VG Moritz

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

    Hallo, in diesem speziellen Fall liegt es wohl an der Umstellung von Sommer- auf Winterzeit am 31.10.2021. Abhilfe schafft die date()-Funktion:

     

    date(year(DATUM), month(DATUM), day(DATUM) + 1)

    • Wohnungshilfe Bremen e.V.
    • Administrator.2
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo, es lag laut Support daran, dass möglichweise die Daten auf Servern in unterschiedlichen Zeitzonen bearbeitet wurden. Ich habe eine Anleitung bekommen in der die Funktion correctedDate() vorgestellt wird. Sie dient dazu, das ein Datum immer so angezeigt wird wie es eingegeben wurde, unabhängig davon in welcher Zeitzone es betrachtet wird.

    meinDatum := correctedDate(meinDatum);

    Die Funktion akzeptiert nur den Typ Datum als Parameter.

    Damit konnte ich das Problem lösen.

    Im ersten Schritt habe ich mit einer Massendatenänderung alle Daten korrigiert.

    Für eine korrekte Eingabe habe ich sie als Trigger nach Änderung des Feldes gesetzt. 

    Jetzt rechnet mein Urlaubsplaner wieder richtig!

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

    Danke für die Rückmeldung! Beim 31.10.2021 liegt es allerdings mit großer Wahrscheinlichkeit nicht an verschiedenen Servern, sondern an der Umstellung von Sommer- auf Winterzeit an diesem Tag. Denn die falsche Berechnung lässt sich beliebig reproduzieren, wogegen sie beim 30.10. und beim 01.11. korrekt funktioniert. Mit correctedDate() wurden vermutlich nur die vorhandenen Daten korrigiert. Es würde mich nicht wundern, wenn das Problem beim nächsten Datensatz mit dem 31.10.2021 wieder auftritt. Am besten zur Sicherheit mal ausprobieren.

     

    Ich würde aber generell empfehlen, bei Additionen von Jahren, Monaten oder Tagen auf Datums-Werte immer o. g. date()-Formel zu verwenden.

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 5Antworten
  • 305Ansichten