NEWS
Timestamp Umwandeln in Node Red (gelöst)
-
@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:
So fixes ändern +/- 1 Stunde fällt einem i.d.R. irgendwann auf die Füße;-)
-
@rewenode Hi, danke, mit dem getTimezoneOffset klappts jetzt, ohne das ich es fix umrechnen muss.
-
@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.
-
@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
-
@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:Hier mit der ChangeNode und JSONata:
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.
-
-
So sieht die Meldung jetzt in Telegram aus .
-
@frankyboy73 said in Timestamp Umwandeln in Node Red (gelöst):
Na schaut doch gut aus - hast Du Change Node - mit JSONata verwendet?
-
@mickym
Ja, ich habe die change Node verwendet.
Hier der Eintrag.$moment(payload.ts).locale("de").format('dddd, D.MM.YYYY [,] kk[ Uhr ]mm')
-
@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!