Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Timestamp Umwandeln in Node Red (gelöst)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Timestamp Umwandeln in Node Red (gelöst)

    This topic has been deleted. Only users with topic management privileges can see it.
    • F
      frankyboy73 @rewenode last edited by frankyboy73

      @rewenode Stimmt, nach dem ich mich jetzt etwas eingelesen habe und mich noch etwas mit deinem Beispiel beschäftigt habe, habe ich es auch kapiert. Je nach dem was ich bei "return" als Konvertierung eingebe (toLocalDateString oder toUTCString, usw) bekomme unterschiedliche Ausgaben des Datums. Meine bevorzugte Variante wäre glaube ich UTCString. Dann muss ich nur noch bei Date auf die richtige msg verweisen und ich habe das was ich wollte.
      Vielen Dank für den Schubser in die richtige Richtung, dadurch habe ich wieder ne Menge dazu gelernt. Mehr als hättest du mir die komplette Lösung für meinen Bedarf auf dem Silbertabett serviert.
      Timestamp4.jpg

      // diese funktion wandelt msg.payload.ts in Wochentag Tag Monat Jahr Stunde Minute Sekunde um
      // +3600000 weil sonst eine Stunde zu wenig angezeigt wird
      
      global.set("mydTime", function () {
          return ((new Date(msg.payload.ts + 3600000)).toUTCString())
      })
      
      msg.payload.ts = global.get("mydTime")();
      return msg;
      
      

      Edit: Bei UTC oder auch bei GMT wurde mir leider 1 Stunde zu wenig angezeigt. Weiß jemand woran das liegt?
      Ich habe mir jetzt erst mal damit beholfen das ich zu meiner msg.payload.ts 3600000 (1 Stunde) dazu addiere. Mal schauen ob das auch beim 0 Uhr (Tageswechsel) so hin haut.

      R 1 Reply Last reply Reply Quote 0
      • R
        rewenode @frankyboy73 last edited by

        @frankyboy73 Kann zwar nicht mit Sicherheit sagen, ob das das Problem löst, weil ich damit nicht getestet habe, aber du solltest vlt. hier mal reinschauen:

        time-zone offset

        So fixes ändern +/- 1 Stunde fällt einem i.d.R. irgendwann auf die Füße;-)

        F 1 Reply Last reply Reply Quote 1
        • F
          frankyboy73 @rewenode last edited by

          @rewenode Hi, danke, mit dem getTimezoneOffset klappts jetzt, ohne das ich es fix umrechnen muss.

          1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @frankyboy73 last edited by mickym

            @frankyboy73 Ich nutze die Javascript Moment Bibliothek - da bist am flexibelsten.

            Hier mal die Nodes: https://flows.nodered.org/node/node-red-contrib-moment

            dann hast Du zur formatierung der Datum/Zeit folgende Möglichkeiten:

            https://momentjs.com/docs/#/displaying/format/

            Musst halt über den Adapter oder falls Du Palettenmanager nutzt über diesen installieren.

            R 1 Reply Last reply Reply Quote 0
            • R
              rewenode @mickym last edited by

              @mickym said in Timestamp Umwandeln in Node Red (gelöst):

              Musst halt über den Adapter oder falls Du Palettenmanager nutzt über diesen installieren.

              Nicht unbedingt nötig. Moment.js ist in allen JSONata-nodes (change, incjekt usw.) seit NR 1.1.0 enthalten.

              Siehe hier: moment.js in NR

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @rewenode last edited by mickym

                @rewenode said in Timestamp Umwandeln in Node Red (gelöst):

                @mickym said in Timestamp Umwandeln in Node Red (gelöst):

                Musst halt über den Adapter oder falls Du Palettenmanager nutzt über diesen installieren.

                Nicht unbedingt nötig. Moment.js ist in allen JSONata-nodes (change, incjekt usw.) seit NR 1.1.0 enthalten.

                Siehe hier: moment.js in NR

                Klasse !!! Das wusste ich auch noch nicht. Allerdings hat es mich nun ca. 2 Stunden gekostet - bis ich die Syntax rausbekommen habe, dass ich das gleiche wie mit der Node bekommen habe - aber letztlich habe ich es rausbekommen.

                Wichtig scheint hier auch die Reihenfolge zu sein.

                Ich hab das mal hier in dem Flow gegenübergestellt:
                Hier mal mit der Moment Node:

                screen.png

                Hier mit der ChangeNode und JSONata:

                screen.png

                Um also auch die deutschen Namen zu übernehmen muss das locale vorne dran gestellt werden, das ist leider in der Beschreibung nicht drin gewesen. 😉
                Also wie folgt:

                $moment(payload).locale("de").format('dddd, [der] D. MMMM YYYY [um] HH:mm')
                

                Statt hh wie in dem Screenshot kk oder HH für 24h Anzeige nehmen.

                HIer wieder der gesamte Workflow zum Nachvollziehen:

                [
                    {
                        "id": "df944da5.6a23e",
                        "type": "inject",
                        "z": "dce8fa20.2e93c8",
                        "name": "",
                        "props": [
                            {
                                "p": "payload"
                            },
                            {
                                "p": "topic",
                                "vt": "str"
                            }
                        ],
                        "repeat": "",
                        "crontab": "",
                        "once": false,
                        "onceDelay": 0.1,
                        "topic": "",
                        "payload": "",
                        "payloadType": "date",
                        "x": 940,
                        "y": 140,
                        "wires": [
                            [
                                "ccf0fb59.dd6798",
                                "39d58864.e30568",
                                "8b85c7e7.4986b8"
                            ]
                        ]
                    },
                    {
                        "id": "bfb1aa88.fe50c8",
                        "type": "debug",
                        "z": "dce8fa20.2e93c8",
                        "name": "",
                        "active": true,
                        "tosidebar": true,
                        "console": false,
                        "tostatus": false,
                        "complete": "false",
                        "statusVal": "",
                        "statusType": "auto",
                        "x": 1390,
                        "y": 140,
                        "wires": []
                    },
                    {
                        "id": "ccf0fb59.dd6798",
                        "type": "moment",
                        "z": "dce8fa20.2e93c8",
                        "name": "",
                        "topic": "",
                        "input": "",
                        "inputType": "msg",
                        "inTz": "Europe/Berlin",
                        "adjAmount": 0,
                        "adjType": "days",
                        "adjDir": "add",
                        "format": "dddd, [der] D. MMMM YYYY [um] hh:mm",
                        "locale": "de-DE",
                        "output": "",
                        "outputType": "msg",
                        "outTz": "Europe/Berlin",
                        "x": 1170,
                        "y": 140,
                        "wires": [
                            [
                                "bfb1aa88.fe50c8"
                            ]
                        ]
                    },
                    {
                        "id": "9e57419a.12eb2",
                        "type": "debug",
                        "z": "dce8fa20.2e93c8",
                        "name": "Change Node",
                        "active": true,
                        "tosidebar": true,
                        "console": false,
                        "tostatus": false,
                        "complete": "payload",
                        "targetType": "msg",
                        "statusVal": "",
                        "statusType": "auto",
                        "x": 1400,
                        "y": 180,
                        "wires": []
                    },
                    {
                        "id": "39d58864.e30568",
                        "type": "change",
                        "z": "dce8fa20.2e93c8",
                        "name": "",
                        "rules": [
                            {
                                "t": "set",
                                "p": "payload",
                                "pt": "msg",
                                "to": "$moment(payload).locale(\"de\").format('dddd, [der] D. MMMM YYYY [um] hh:mm')",
                                "tot": "jsonata"
                            }
                        ],
                        "action": "",
                        "property": "",
                        "from": "",
                        "to": "",
                        "reg": false,
                        "x": 1170,
                        "y": 180,
                        "wires": [
                            [
                                "9e57419a.12eb2"
                            ]
                        ]
                    },
                    {
                        "id": "8b85c7e7.4986b8",
                        "type": "debug",
                        "z": "dce8fa20.2e93c8",
                        "name": "unix TimeStamp",
                        "active": true,
                        "tosidebar": true,
                        "console": false,
                        "tostatus": false,
                        "complete": "payload",
                        "targetType": "msg",
                        "statusVal": "",
                        "statusType": "auto",
                        "x": 1160,
                        "y": 100,
                        "wires": []
                    }
                ]
                

                Nochmal ganz herzlichen Dank an Dich @rewenode . Man lernt nicht aus. 😉

                Die Zeitzonen habe ich auch gerade getestet das funktioniert auch - allerdings ist es auch wieder wichtig, dass die vor dem Format String steht:

                $moment(payload).locale("de").tz('Europe/Berlin').format('dddd, [der] D. MMMM YYYY [um] HH:mm')
                

                Hier habe ich im Übrigen noch ein Auflistung für mögliche Zeitzonen gefunden.

                F R 2 Replies Last reply Reply Quote 0
                • F
                  frankyboy73 @mickym last edited by

                  @mickym @rewenode
                  Vielen Dank ihr beiden, dank euch konnte ich es jetzt genau so umsetzen wie ich wollte.
                  Timestamp4.jpg

                  F 1 Reply Last reply Reply Quote 0
                  • F
                    frankyboy73 @frankyboy73 last edited by

                    So sieht die Meldung jetzt in Telegram aus . 😁
                    84157D0E-F564-4BC7-A019-301D73724291.jpeg

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @frankyboy73 last edited by mickym

                      @frankyboy73 said in Timestamp Umwandeln in Node Red (gelöst):

                      Na schaut doch gut aus - hast Du Change Node - mit JSONata verwendet?

                      F 1 Reply Last reply Reply Quote 0
                      • F
                        frankyboy73 @mickym last edited by frankyboy73

                        @mickym
                        Ja, ich habe die change Node verwendet.
                        Timestamp5.jpg
                        Hier der Eintrag.

                        $moment(payload.ts).locale("de").format('dddd, D.MM.YYYY [,] kk[ Uhr ]mm')
                        
                        1 Reply Last reply Reply Quote 1
                        • R
                          rewenode @mickym last edited by

                          @mickym said in Timestamp Umwandeln in Node Red (gelöst):

                          Allerdings hat es mich nun ca. 2 Stunden gekostet - bis ich die Syntax rausbekommen habe, dass ich das gleiche wie mit der Node bekommen habe - aber letztlich habe ich es rausbekommen.

                          Ja, ist leider nicht gerade einfach dokumentiert.
                          Hätte vlt. noch diesen Link angeben sollen https://momentjs.com/docs/
                          Da braucht's aber auch viel Zeit da durchzusteigen;-) Na wenigstens hast du jetzt die wichtigsten Infos zusammengetragen. Danke dafür!

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          655
                          Online

                          31.7k
                          Users

                          79.7k
                          Topics

                          1.3m
                          Posts

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