Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst] Javascript verwendet falsches Datum

    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

    [gelöst] Javascript verwendet falsches Datum

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

      Ich habe jetzt schon einige Zeit über die Suche versucht, die Lösung für mein Problem zu finden, aber ohne Erfolg. Deshalb muss ich es doch mit einer eigenen Frage versuchen:

      Ich habe heute festgestellt, dass Javascript mit der falschen Zeit zu arbeiten scheint.
      Wenn ich folgendes Testscript ausführe, erscheint im Protokoll die UTC Zeit.

      log(new Date());
      

      Logeintrag:

      036F8294-A3C0-4107-AC06-3BC6F497949C_4_5005_c.jpeg

      der ioBroker läuft auf einem Raspberry Pi 5. Die Zeitzone ist korrekt auf Vienna eingestellt:

      89A342E7-77CD-44B6-9FA6-86BD50B0477B.jpeg

      Gibt es etwas, das ich übersehen habe?

      LG, Achim

      Armilar 1 Reply Last reply Reply Quote 0
      • crunchip
        crunchip Forum Testing Most Active last edited by crunchip

        @achimka sagte in Javascript verwendet falsches Datum:

        Gibt es etwas, das ich übersehen habe?

        frisch eingerichtet? mal neu gestartet?

        edit
        weil ichs bei mir grad selbst getestet hab, bei mir wird auch utc gezeigt
        aber
        hab dann das gefunden, könnte auch am Browser liegen, siehe
        https://213.136.68.177/post/453247

        A 1 Reply Last reply Reply Quote 0
        • Armilar
          Armilar Most Active Forum Testing @AchimKa last edited by Armilar

          @achimka sagte in Javascript verwendet falsches Datum:

          log(new Date());

          log(new Date().toLocaleString("de-DE", {timeZone: "Europe/Berlin"}));
          
          A 1 Reply Last reply Reply Quote 0
          • A
            AchimKa @Armilar last edited by AchimKa

            @armilar Das Problem ist folgendes:

            Alle Zeitberechnungen sind um 2 Stunden verschoben. Wenn ich ein Datum ohne Uhrzeit konvertiere, wird nicht 0:00 Uhr, sondern 2:00 Uhr ausgegeben:

            1D26A398-6A01-476A-8612-F1D2FFFFA8F9.jpeg

            Ergebnis im Protokoll:

            03F4F99E-8C6F-4680-A2BE-81B5625EF3D0_4_5005_c.jpeg

            Dementsprechend sind auch alle Zeitfensterberechnungen, die ich im Anschluss durchführen möchte, fehlerhaft.

            Armilar 1 Reply Last reply Reply Quote 0
            • A
              AchimKa @crunchip last edited by

              @crunchip sagte in Javascript verwendet falsches Datum:

              @achimka sagte in Javascript verwendet falsches Datum:

              Gibt es etwas, das ich übersehen habe?

              frisch eingerichtet? mal neu gestartet?

              edit
              weil ichs bei mir grad selbst getestet hab, bei mir wird auch utc gezeigt
              aber
              hab dann das gefunden, könnte auch am Browser liegen, siehe
              https://213.136.68.177/post/453247

              Neu gestartet: ja
              Alle Upgrades im OS eingespielt: auch ja

              Inwieweit das am Browser liegen soll, ist mir unklar. Die Berechnung wird doch auf dem Raspi ausgeführt, oder?

              1 Reply Last reply Reply Quote 0
              • Armilar
                Armilar Most Active Forum Testing @AchimKa last edited by Armilar

                @achimka

                ist der Datenpunkt vom Typ Date oder String?

                4028b539-d012-465a-836f-91b0e321a7a2-image.png

                Ansonsten kurz die Objektdaten posten

                A 1 Reply Last reply Reply Quote 0
                • A
                  AchimKa @Armilar last edited by

                  @armilar sagte in Javascript verwendet falsches Datum:

                  Ansonsten kurz die Objektdaten posten

                  {
                    "common": {
                      "name": "Batterie Netzladung manuell am",
                      "desc": "Manuell erzeugt",
                      "role": "state",
                      "type": "number",
                      "read": true,
                      "write": true,
                      "def": 0
                    },
                    "type": "state",
                    "native": {},
                    "from": "system.adapter.admin.0",
                    "user": "system.user.admin",
                    "ts": 1727883852771,
                    "_id": "0_userdata.0.Einstellungen.Batterie_Netzladung_manuell_am",
                    "acl": {
                      "object": 1636,
                      "state": 1636,
                      "owner": "system.user.admin",
                      "ownerGroup": "system.group.administrator"
                    }
                  }
                  
                  Armilar 1 Reply Last reply Reply Quote 0
                  • Armilar
                    Armilar Most Active Forum Testing @AchimKa last edited by Armilar

                    @achimka

                    huch - warum number?

                    ändere den mal auf String, wenn der nur das Datum hat...

                    siehe:
                    9165b96c-e87d-4e63-85e5-15d3f21319ce-image.png

                    499546ba-7b5f-49d4-b729-d515f9df0db5-image.png

                    oder direkt in Date...

                    number müsste doch in der Form Warnungen im Log bringen...

                    A 2 Replies Last reply Reply Quote 0
                    • A
                      AchimKa @Armilar last edited by

                      @armilar sagte in Javascript verwendet falsches Datum:

                      @achimka

                      huch - warum number?

                      ändere den mal auf String, wenn der nur das Datum hat...

                      Ich hab den Datentyp jetzt auf String geändert und das Datum über mein VIS-Frontend auf 3.10.2024 geändert. Ausgabe im Protokoll wieder um 2 Stunden verschoben:

                      3E917F8F-E23C-4037-AE8D-FF0C37A205C0.jpeg

                      270FE5E7-EC7F-4273-A638-ED5DFD3CFA3B.jpeg

                      C131DE68-2493-4421-924C-76CFE397A75C.jpeg

                      1 Reply Last reply Reply Quote 0
                      • A
                        AchimKa @Armilar last edited by

                        @armilar sagte in Javascript verwendet falsches Datum:

                        number müsste doch in der Form Warnungen im Log bringen...

                        Ich setze das Datum in VIS über ctrl - Input Date. Ich ging davon aus, dass dann der Unix-Timestamp für 00:00:00 gespeichert wird und man direkt damit rechnen kann. Deswegen der Versuch mit Number. Aber wie du siehst, führt auch Text zum gleichen (falschen) Ergebnis.

                        Armilar 1 Reply Last reply Reply Quote 0
                        • Armilar
                          Armilar Most Active Forum Testing @AchimKa last edited by

                          @achimka

                          Stimmt, wie soll das denn weiterverarbeitet werden?

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            AchimKa @Armilar last edited by

                            @armilar sagte in Javascript verwendet falsches Datum:

                            @achimka

                            Stimmt, wie soll das denn weiterverarbeitet werden?

                            Es geht um die geplante Ladung meiner PV-Batterie aus dem Netz bei flexiblem Stromtarif. Deswegen habe ich eine Datumsangabe, einen Startzeitpunkt in vollen Stunden, aus dem ich dann einen vollständigen Timestamp zusammensetzen möchte, und eine Ladedauer in vollen Stunden.

                            7194D54C-65E0-4F35-9452-52BE18A73E74_4_5005_c.jpeg

                            Wenn Ladedatum jetzt tatsächlich 00:00:00 Uhr wäre, dann könnte ich so meinen Startzeitpunkt errechnen:

                            FA5A28E0-F929-42E8-ABC6-957E2C5B1E32_4_5005_c.jpeg

                            Nur leider ist mein errechneter Startzeitpunkt zwei Stunden zu spät!

                            Armilar paul53 2 Replies Last reply Reply Quote 0
                            • Armilar
                              Armilar Most Active Forum Testing @AchimKa last edited by

                              @achimka

                              0dfdbda6-567a-4671-893e-f6feb648bdab-image.png

                              Was passiert, wenn du die 2 Stunden so subtrahierst?

                              A paul53 2 Replies Last reply Reply Quote 0
                              • A
                                AchimKa @Armilar last edited by AchimKa

                                @armilar sagte in Javascript verwendet falsches Datum:

                                Was passiert, wenn du die 2 Stunden so subtrahierst?

                                Das wird vermutlich schon funktionieren, allerdings nur bis Ende Oktober. Mit Beginn der Winterzeit wird sich der Abstand auf eine Stunde reduzieren.

                                Ich werde jetzt versuchen, das Startdatum anders zusammenzusetzen. Allerdings würde ich schon gerne verstehen, was die Ursache für die Datumsabweichung ist. Ich wundere mich, dass es nicht mehr Meldungen zu diesem Problem gibt. Im Grunde simple Zeitschaltfunktionen werden so unnötig kompliziert.

                                1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @Armilar last edited by paul53

                                  @armilar sagte: Was passiert, wenn du die 2 Stunden so subtrahierst?

                                  Das Format "2.10.2024" funktioniert nicht, denn es wird falsch interpretiert (Monat als Tag und umgekehrt). Außerdem muss eine Uhrzeit mitgegeben werden, da sonst 0:00 Uhr UTC verwendet wird.
                                  So erfolgt die richtige Auswertung:

                                  Blockly_temp.JPG

                                  1 Reply Last reply Reply Quote 2
                                  • paul53
                                    paul53 @AchimKa last edited by

                                    @achimka sagte: Startzeitpunkt zwei Stunden zu spät!

                                    Mache eine String-Verkettung aus Datum und Stunde:

                                    Blockly_temp.JPG

                                    A 1 Reply Last reply Reply Quote 3
                                    • A
                                      AchimKa @paul53 last edited by

                                      @paul53 sagte in Javascript verwendet falsches Datum:

                                      Das Format "2.10.2024" funktioniert nicht, denn es wird falsch interpretiert (Monat als Tag und umgekehrt). Außerdem muss eine Uhrzeit mitgegeben werden, da sonst 0:00 Uhr UTC verwendet wird.

                                      Ja, mein Denkfehler war davon auszugehen, dass alle Datum-/Zeit-Funktionen in Javascript die lokalen Systemzeit-Einstellungen verwenden. Das tun sie offensichtlich nicht. Deshalb gebe ich bei der Umwandlung eines reinen Datums jetzt immer die Uhrzeit 00:00:00 mit. Ich teste das noch etwas aus, denke aber, dass mein Problem damit gelöst ist.

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      884
                                      Online

                                      31.9k
                                      Users

                                      80.2k
                                      Topics

                                      1.3m
                                      Posts

                                      4
                                      17
                                      586
                                      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