Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Datums Interpretation Fehlerhaft

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Datums Interpretation Fehlerhaft

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jeg last edited by

      Ich kämpfe mit fehlerhaften Verhalten bei Datum. Mir ist rätselhaft, was hier eigentlich falsch läuft. Ein Beispiel:

      var lDate1=new Date(2020,1,30,7,52,0);
      var lDate2=new Date("2020-01-30 07:52:00");
      log(lDate1.toString()); // Sun Mar 01 2020 07:52:00 GMT+0100 (GMT+01:00)
      log(lDate2.toString()); // Thu Jan 30 2020 07:52:00 GMT+0100 (GMT+01:00)
      

      Wie man sieht, werden im ersten Fall die Daten falsch interpretiert. Das gleiche passiert auch bei schedule:

      schedule({year:2020,month:1,date:30,hour:11,minute:34,second:0},()=>{
          log((new Date().toString()));
      })
      

      Wenn ich hier das korrekte Datum angebe, dann wird das Ereignis nicht ausgelöst. Weil vermutlich der Monat nicht korrekt interpretiert wird.
      Ob das hiermit im Zusammenhang steht, kann ich zwar nicht sagen, aber ich ebenfalls festgestellt, das bei einem schedule-Auftrag die Wochentagsvorgabe nicht mehr so funktioniert, wie in der Dokumentation bzw. wie sie noch letztes Jahr funktioniert hat. Laut Dokumentation sollte der Sonntag mit 0 oder 7 codiert werden können. Aber die 7 funktioniert nicht mehr seit einem Update Ende Dezember. Zum Leidwesen meiner Tochter, denn ihr Zimmer blieb zweimal kalt, weil der schedule-Auftrag am Sonntag mit 7 nicht ausgeführt wurde.

      Homoran 1 Reply Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @jeg last edited by

        @jeg sagte in Datums Interpretation Fehlerhaft:

        Mir ist rätselhaft, was hier eigentlich falsch läuft

        Hab zwar von js nicht die Ahnung, aber das hier ist für mich eindeutig:

        var lDate1=new Date(2020,1,30,7,52,0); wird folgendermassen zerlegt:

        • 2020 Jahr, korrekt!
        • 1 => Tag: 01.
        • 30 => Monat: 03 (den 30 gibt es ja nicht
        C J 2 Replies Last reply Reply Quote 0
        • C
          CruziX @Homoran last edited by

          @Homoran Nur, dass die Reihenfolge eig Jahr, Monat und Tag ist.
          Mir ist selbigen Verhalten schon aufgefallen mit einfachem new Date();
          Wenn ich hierbei date.getMonth(); ausführe bekomme ich auch immer einen falschen Monat.
          Da scheint glaube generell was nicht zu stimmen.
          Konnte ich in meinem Fall mit formatDate lösen

          1 Reply Last reply Reply Quote 0
          • J
            jeg @Homoran last edited by

            @Homoran
            Manchmal ist man echt blind. Danke. Aber ganz so ist es auch wieder nicht

            new Date(year, monthIndex [, day [, hour [, minutes [, seconds [, milliseconds]]]]]);

            Es kommt schon zuerst der Monat, aber anders, als ich erwartet hatte:

            Das Argument monthIndex ist 0-basiert. Das bedeutet, dass 0 = Januar und 11 = Dezember ist.
            Anmerkung: Wenn Date als Konstruktor mit mehr als einem Argument aufgerufen wird und die übergebenen Werte größer als ihr logischer Bereich sind (z. B. 13 wird als Monat genutzt oder 70 wird als Minutenwert eingesetzt) wird der angrenzende Wert angepasst. Z. B. ist new Date(2013, 13, 1) äquivalent zu new Date(2014, 1,)

            C 1 Reply Last reply Reply Quote 1
            • C
              CruziX @jeg last edited by CruziX

              @jeg Gut zu wissen, da lag wohl auch mein Fehler.
              Also muss man theoretisch immer beim Monat einen drauf addieren?

              Auch nett zu lesen:
              https://stackoverflow.com/a/41992352

              J 1 Reply Last reply Reply Quote 0
              • J
                jeg @CruziX last edited by

                @CruziX
                Wie man es nimmt. Bei der Vorgabe muss man einen Monat abziehen. Für den 30.1.2020 nicht

                new Date(2020,01,30)
                

                sondern

                new Date(2020,0,30)
                

                klingt für mich eindeutig falsch, weil nach der Lesart müssten ja auch der Tag 0-basiert sein. Dieser ist aber 1 basiert.
                Wie dem auch sei, so ist es bei Javascript laut Dokumentation. Wieder was dazu gelernt.

                C 1 Reply Last reply Reply Quote 1
                • C
                  CruziX @jeg last edited by

                  @jeg Ist echt gut zu wissen, genau der Fehler ist mir vor Tagen nämlich auch passiert.
                  Als Java/Javascriptler wäre einem das sicherlich sofort aufgefallen 😄

                  1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators last edited by

                    solltet ihr euch einig sein, dass das ein Fehler ist (wie gesagt ich habe keine Ahnung) dann bitte ein issue im js-Adapter aufmachen

                    J AlCalzone 2 Replies Last reply Reply Quote 0
                    • J
                      jeg @Homoran last edited by

                      @Homoran Das ist kein Fehler im Adapter sondern ein Fehler in Javascript selbst. So ist es auch in jedem Browser und Website. Wenn man im Browser
                      new Date(2020,1,30) eingibt, dann kommt Sun Mar 01 2020 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit) zurück.

                      1 Reply Last reply Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer @Homoran last edited by

                        @Homoran Ich bin mir relativ sicher, dass die entsprechenden Hilfen (z.B. CRON-Designer) das bereits berücksichtigen.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        672
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        javascript
                        4
                        10
                        400
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo