Ok, etwas ausführlicher?
Fangen wir damit an:
ist nicht so optimal, da diese "`" in Javascript eine beesondere Funktion haben. Das dürfte hier nichts ausmachen, aber durch Copy/Past kommt irgendwann der Fehler.
Besser also und "de" reicht:
Code: Alles auswählen
msg.payload = new Date(msg.payload * 1000).toLocaleString('de');
return msg;
Irgendwann kommt der Wunsch an andere Formate dran zu kommen.
Dazu meine ersten Experimente wie ich an die richtigen Felder dran komme:
Code: Alles auswählen
let sysDate = new Date();
let newMsg = msg;
newMsg.payload = sysDate.toLocaleString("de");
newMsg.Stunde = sysDate.getHours();
newMsg.Tag = sysDate.getDate();
newMsg.Monat = sysDate.getMonth();
newMsg.Jahr = sysDate.getFullYear();
newMsg.TagImJahr = TagImJahr(sysDate);
newMsg.mm = shortDate (sysDate);
node.send(newMsg);
function TagImJahr(date) {
return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - Date.UTC(date.getFullYear(), 0, 0)) / 24 / 60 / 60 / 1000;
}
function shortDate(date) {
return (date.toLocaleDateString("de", { month: "short" }) + " " + date.getDate() + " " + date.toLocaleTimeString("de") );
return (Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) - Date.UTC(date.getFullYear(), 0, 0)) / 24 / 60 / 60 / 1000;
}
Elegant sieht es aber anders aus. Da in NodeRed JSONNATA mit der moment Lib integriert ist, lädt man diese durch einen Eintrag in der function node nach.
und ist dann ziemlich flexibel:
Code: Alles auswählen
msg.payload = 1692246141;
msg.payload = moment.unix(msg.payload ).locale('de').format('DD.MM.YYYY [Uhrzeit]: HH:MM [und Baxxy sagt es ist] dddd');
msg.heute = moment().locale('de').format('LLLL');
msg.vor7Stunden = moment().subtract(7, 'h').locale('de').format('LLL');
return msg;
Liefert:
Code: Alles auswählen
{
"payload":"17.08.2023 Uhrzeit: 06:08 und Baxxy sagt es ist Donnerstag",
"heute":"Donnerstag, 17. August 2023 22:38",
"vor7Stunden":"17. August 2023 15:41"}
Gerne können wir noch den Speicherverbrauch oder das Laufzeitverhalten diskutieren, aber die Kurzform ist: nicht relevant
Schwieriger war es, diese Lösung mit lokalem Ansatz zu finden, da sich viele, wie ich am Anfang verzetteln und google kein adäquates Ergebnis brachte.
Chat Gpt habe ich nicht getestet...
Vielleicht liefert das sofort die richtige Lösung.