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?Wenn Sie keine reine JS-Lösung benötigen, können Sie jQuery UI verwenden, um die Aufgabe wie folgt zu erledigen:
$.datepicker.formatDate('yymmdd', new Date());
Normalerweise importiere ich nicht gerne zu viele Bibliotheken. Aber jQuery UI ist so nützlich, dass Sie es wahrscheinlich irgendwo anders in Ihrem Projekt verwenden werden.
Besuchen Sie http://api.jqueryui.com/datepicker/ für weitere Beispiele
Ich mag es nicht, native Objekte zu ändern, und ich denke, dass die Multiplikation klarer ist als das Auffüllen der Zeichenkette die akzeptierte Lösung.
function yyyymmdd(dateIn) {
var yyyy = dateIn.getFullYear();
var mm = dateIn.getMonth() + 1; // getMonth() is zero-based
var dd = dateIn.getDate();
return String(10000 * yyyy + 100 * mm + dd); // Leading zeros for mm and dd
}
var today = new Date();
console.log(yyyymmdd(today));
Ortszeit:
var date = new Date();
date = date.toJSON().slice(0, 10);
UTC-Zeit:
var date = new Date().toISOString();
date = date.substring(0, 10);
Das Datum wird heute, während ich dies schreibe, auf 2020-06-15 gedruckt.
toISOString()-Methode gibt das Datum mit dem ISO-Standard zurück, der YYYY-MM-DDTHH:mm:ss.sssZ
Der Code enthält die ersten 10 Zeichen, die wir für das Format JJJJ-MM-TT benötigen.
Wenn Sie ein Format ohne '-' wünschen, verwenden Sie:
var date = new Date();
date = date.toJSON().slice(0, 10).split`-`.join``;
In .join`` können Sie Leerzeichen, Punkte oder was immer Sie wollen einfügen.
Zusätzlich zu o-o's Antwort möchte ich empfehlen, die logischen Operationen von der Rückgabe zu trennen und sie stattdessen als Ternäre in die Variablen zu setzen.
Verwenden Sie außerdem concat()
um eine sichere Verkettung von Variablen zu gewährleisten
Date.prototype.yyyymmdd = function() {
var yyyy = this.getFullYear();
var mm = this.getMonth() < 9 ? "0" + (this.getMonth() + 1) : (this.getMonth() + 1); // getMonth() is zero-based
var dd = this.getDate() < 10 ? "0" + this.getDate() : this.getDate();
return "".concat(yyyy).concat(mm).concat(dd);
};
Date.prototype.yyyymmddhhmm = function() {
var yyyymmdd = this.yyyymmdd();
var hh = this.getHours() < 10 ? "0" + this.getHours() : this.getHours();
var min = this.getMinutes() < 10 ? "0" + this.getMinutes() : this.getMinutes();
return "".concat(yyyymmdd).concat(hh).concat(min);
};
Date.prototype.yyyymmddhhmmss = function() {
var yyyymmddhhmm = this.yyyymmddhhmm();
var ss = this.getSeconds() < 10 ? "0" + this.getSeconds() : this.getSeconds();
return "".concat(yyyymmddhhmm).concat(ss);
};
var d = new Date();
document.getElementById("a").innerHTML = d.yyyymmdd();
document.getElementById("b").innerHTML = d.yyyymmddhhmm();
document.getElementById("c").innerHTML = d.yyyymmddhhmmss();
<div>
yyyymmdd: <span id="a"></span>
</div>
<div>
yyyymmddhhmm: <span id="b"></span>
</div>
<div>
yyyymmddhhmmss: <span id="c"></span>
</div>