Forum: PC-Programmierung NodeRed newDate() formatierung enthält komma im Jahr


von Johannes (Gast)


Lesenswert?

hallo,
ich möchte in NodeRed das aktuelle Datum in folgendem Format speichern
DD_MM_JJJJ umd so die datei zu benennen (DD_MM_JJJ.txt) und dort einen 
log zu speichern.
Dazu habe ich ein Funktions-node erstellt um das Datum zu formatieren.
Mein Problem ist aber momentan das Jahr
1
var d = new Date();
2
var t = d.getTime();
3
4
5
if(d.getDate() < 10) {
6
    day = "0" + d.getDate().toLocaleString();
7
}
8
else {
9
    day = d.getDate().toLocaleString();
10
}
11
12
if((d.getMonth() + 1) < 10) {
13
    month = "0" + (d.getMonth() + 1).toLocaleString();
14
}
15
else {
16
    month = (d.getMonth() + 1).toLocaleString();
17
}
18
19
year = d.getFullYear().toLocaleString();
20
var filename = day + "_" + month + "_" + year;
21
msg.payload = filename;
22
return msg;
Hinter dem Funktions-node habe ich ein debug-node
dort wird als date
"15_10_2,022"
ausgegeben.
woher kommt das komma bei 2022?

Auch wenn ich filename nur
1
msg.payload = d.getFullYear().toLocaleString();
2
return msg;
mache, steht das komma darinn.

von Wolfgang (Gast)


Lesenswert?

Johannes schrieb:
> ich möchte in NodeRed das aktuelle Datum in folgendem Format speichern
> DD_MM_JJJJ umd so die datei zu benennen (DD_MM_JJJ.txt) und dort einen
> log zu speichern.

Viel Spaß beim Suchen nach den Dateien. Das Format eignet sich nicht 
einmal, wenn du auf die Monatsenddateien zugreifen willst.
Nicht ohne Grund wurde von der ISO das Datumsformat in der Form 
YYYY-MM-DD o.ä. festgelegt (ISO 8601) und in Deutschland in der Norm DIN 
EN 28601 übernommen.

von Wolfgang (Gast)


Lesenswert?

Johannes schrieb:
> woher kommt das komma bei 2022?

p.s.
Das wird wohl dein Tausendertrennzeichen sein.

von Johannes (Gast)


Lesenswert?

Wolfgang schrieb:
> Viel Spaß beim Suchen nach den Dateien. Das Format eignet sich nicht
> einmal, wenn du auf die Monatsenddateien zugreifen willst.
> Nicht ohne Grund wurde von der ISO das Datumsformat in der Form
> YYYY-MM-DD o.ä. festgelegt (ISO 8601) und in Deutschland in der Norm DIN
> EN 28601 übernommen.

Ja, da hast du recht.

Habe es jetzt auch mit dem komma hinbekommen und den namen der Textdatei 
umbenannt.
Funktion 1:
1
var d = new Date();
2
var payload = {
3
    'month': d.getMonth() + 1,
4
    'day': d.getDate(),
5
    'year': d.getFullYear(),
6
    'hours': d.getHours(),
7
    'mins': d.getMinutes(),
8
    'secs': d.getSeconds(),
9
    'msecs': d.getMilliseconds()
10
}
11
msg.payload = payload;
12
return msg;

Funktion 2:
1
var filename;
2
var absoluteFilename;
3
4
var mainPath = "/home/NodeRed/logs/"
5
6
filename = msg.payload.year + "_" + msg.payload.month + "_" + msg.payload.day + "." + "log.txt";
7
absoluteFilename = mainPath + filename;
8
msg.payload = absoluteFilename;
9
return msg;

Das Problem mit dem Komma hatte was damit zu tun, ob ich den Wert mit
1
toLocalString()
oder
1
toString()
umwandle

von Εrnst B. (ernst)


Lesenswert?

Johannes schrieb:
> Das Problem mit dem Komma hatte was damit zu tun, ob ich den Wert
> mit toLocalString()
> oder toString()
> umwandle

Wenigstens hast du die "richtige" Lösung gewählt, und das toLocaleString 
rausgenommen.
Die "falsche" Lösung wäre gewesen, die Spracheinstellungen deines 
Betriebssystems zu verwursten bis das Tausender-Trennzeichen weg ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.