Ich versuche, JS zu verwenden, um eine date object
in eine Zeichenkette in YYYYMMDD
Format. Gibt es einen einfacheren Weg als die Verkettung von Date.getYear()
, Date.getMonth()
y Date.getDay()
?
Antworten
Zu viele Anzeigen?Ab ES6 können Sie Template-Strings verwenden, um sie etwas kürzer zu machen:
var now = new Date();
var todayString = `${now.getFullYear()}-${now.getMonth()}-${now.getDate()}`;
Bei dieser Lösung wird das Pad nicht auf Null gesetzt. Schauen Sie sich die anderen guten Antworten an, um zu sehen, wie man das macht.
Es scheint, dass mootools Folgendes bietet Date().format()
: https://mootools.net/more/docs/1.6.0/Types/Date
Ich bin mir allerdings nicht sicher, ob es sich lohnt, sie nur für diese spezielle Aufgabe einzusetzen.
Ich verwende in der Regel den unten stehenden Code, wenn ich dies tun muss.
var date = new Date($.now());
var dateString = (date.getFullYear() + '-'
+ ('0' + (date.getMonth() + 1)).slice(-2)
+ '-' + ('0' + (date.getDate())).slice(-2));
console.log(dateString); //Will print "2015-09-18" when this comment was written
Zur Erklärung: .slice(-2) liefert uns die letzten beiden Zeichen der Zeichenkette.
Wir können also auf jeden Fall eine "0" an den Tag oder den Monat anhängen und nur nach den letzten beiden fragen, da diese immer die beiden gewünschten sind.
Wenn MyDate.getMonth() also 9 zurückgibt, ist das der Fall:
("0" + "9") // Giving us "09"
Wenn man also .slice(-2) dazu addiert, erhält man die letzten beiden Zeichen, nämlich:
("0" + "9").slice(-2)
"09"
Wenn date.getMonth() jedoch 10 zurückgibt, dann schon:
("0" + "10") // Giving us "010"
Wenn man also .slice(-2) hinzufügt, erhält man die letzten beiden Zeichen, oder:
("0" + "10").slice(-2)
"10"