546 Stimmen

Get String in YYYYMMDD Format von JS Datum Objekt?

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() ?

41voto

NLemay Punkte 2233

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

40voto

Brian Powell Punkte 3168

Dies ist eine einzige Codezeile, mit der Sie eine YYYY-MM-DD Zeichenfolge des heutigen Datums.

var d = new Date().toISOString().slice(0,10);

34voto

Darren Griffith Punkte 3120

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));

Fiedel: http://jsfiddle.net/gbdarren/Ew7Y4/

31voto

alfredo-fredo Punkte 484

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.

27voto

Eric Herlitz Punkte 23781

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>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X