Frage So formatieren Sie ein JavaScript-Datum


Wie kann ich ein JavaScript-Datumsobjekt zum Drucken als formatieren? 10-Aug-2010?


1257
2017-08-23 23:28


Ursprung


Antworten:


Achtung: Es gibt bessere Antworten unten. Diese Antwort wurde 2010 geschrieben und neuere und bessere Lösungen sind seitdem angekommen. Das OP sollte eine andere Antwort akzeptieren.

function formatDate(date) {
  var monthNames = [
    "January", "February", "March",
    "April", "May", "June", "July",
    "August", "September", "October",
    "November", "December"
  ];

  var day = date.getDate();
  var monthIndex = date.getMonth();
  var year = date.getFullYear();

  return day + ' ' + monthNames[monthIndex] + ' ' + year;
}

console.log(formatDate(new Date()));  // show current date-time in console

Sie können das Array bearbeiten monthNames Jan, Feb, Mar usw. zu benutzen.


864
2017-08-23 23:35



Benutzen toLocaleDateString();

Das toLocaleDateString() method gibt eine Zeichenfolge mit einer sprachsensitiven Darstellung des Datumsteils des Datums zurück. Mithilfe der Argumente locales und options können Anwendungen die Sprache angeben, deren Formatierungskonventionen verwendet werden sollen, und das Verhalten der Funktion anpassen.

Die Werte, die Sie in Optionen für verschiedene Schlüssel übergeben können:

  1. Tag: 
    Die Darstellung des Tages.
    Mögliche Werte sind "numerisch", "2-stellig".
  2. Wochentag: 
    Die Darstellung des Wochentages.
    Mögliche Werte sind "eng", "kurz", "lang".
  3. Jahr: 
    Die Darstellung des Jahres.
    Mögliche Werte sind "numerisch", "2-stellig".
  4. Monat: 
    Die Darstellung des Monats.
    Mögliche Werte sind "numerisch", "2-stellig", "schmal", "kurz", "lang".
  5. Stunde: 
    Die Darstellung der Stunde.
    Mögliche Werte sind "numerisch", "2-stellig".
  6. Minute: Die Darstellung der Minute.
     Mögliche Werte sind "numerisch", "2-stellig".
  7. zweite: 
    Die Darstellung des zweiten.
    Mögliche Werte sind "numerisch", zweistellig ".

Alle diese Schlüssel sind optional. Sie können die Anzahl der Optionswerte basierend auf Ihren Anforderungen ändern. Dies spiegelt auch das Vorhandensein jedes Datumszeitraums wider.

Hinweis: Wenn Sie nur die Inhaltsoptionen konfigurieren möchten, aber weiterhin das aktuelle Gebietsschema verwenden möchten, übergeben Sie null für den ersten Parameter wird ein Fehler verursacht. Benutzen undefined stattdessen.

Für verschiedene Sprachen:

  1. "en-USA": Für Englisch
  2. "Hallo-IN": Für Hindi
  3. "ja-JP": Für Japanisch

Sie können mehr Sprachoptionen verwenden.

Beispielsweise

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var today  = new Date();

console.log(today.toLocaleDateString("en-US")); // 9/17/2016
console.log(today.toLocaleDateString("en-US", options)); // Saturday, September 17, 2016
console.log(today.toLocaleDateString("hi-IN", options)); // शनिवार, 17 सितंबर 2016

Sie können auch die toLocaleString() Methode für den gleichen Zweck. Der einzige Unterschied ist, dass diese Funktion die Zeit liefert, wenn Sie keine Optionen übergeben.

// Example
9/17/2016, 1:21:34 PM

Verweise:


766
2017-12-01 08:11



Benutze die date.format-Bibliothek:

var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");

kehrt zurück:

Saturday, June 9th, 2007, 5:46:21 PM 

Datumsformat auf Npm

http://jsfiddle.net/phZr7/1/


523
2017-08-23 23:35



Wenn Sie Ihr Datum schnell mit normalem JavaScript formatieren müssen, verwenden Sie getDate, getMonth + 1, getFullYear, getHours und getMinutes:

var d = new Date();

var datestring = d.getDate()  + "-" + (d.getMonth()+1) + "-" + d.getFullYear() + " " +
d.getHours() + ":" + d.getMinutes();

// 16-5-2015 9:50

Oder, wenn Sie es mit Nullen aufgefüllt werden müssen:

var datestring = ("0" + d.getDate()).slice(-2) + "-" + ("0"+(d.getMonth()+1)).slice(-2) + "-" +
    d.getFullYear() + " " + ("0" + d.getHours()).slice(-2) + ":" + ("0" + d.getMinutes()).slice(-2);

// 16-05-2015 09:50

326
2018-05-16 07:02



Nun, was ich wollte, war, das heutige Datum zu a konvertieren MySQL friendly date string wie 2012-06-23, und diese Zeichenfolge als Parameter in einer meiner Abfragen verwenden. Die einfache Lösung, die ich gefunden habe, ist diese:

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

Beachten Sie, dass die obige Lösung dies tut nicht Berücksichtigen Sie Ihren Zeitzonen-Offset.

Sie können diese Funktion stattdessen verwenden:

function toJSONLocal (date) {
    var local = new Date(date);
    local.setMinutes(date.getMinutes() - date.getTimezoneOffset());
    return local.toJSON().slice(0, 10);
}

Dies gibt Ihnen das richtige Datum, wenn Sie diesen Code um den Anfang / Ende des Tages ausführen.


301
2018-06-23 18:49



Wenn du bist bereits mit jQuery UI in deinem Projekt könntest du es so machen:

var formatted = $.datepicker.formatDate("M d, yy", new Date("2014-07-08T09:02:21.377"));

// formatted will be 'Jul 8, 2014'

Einige Datepicker-Datumsformatoptionen zum Abspielen sind verfügbar Hier.


157
2017-07-09 13:52



Ich denke du kannst das einfach benutzen Nicht-Standard Datumsmethode toLocaleFormat(formatString)

formatString: Eine Formatzeichenfolge im selben Format wie von der strftime() Funktion in C.

var today = new Date();
today.toLocaleFormat('%d-%b-%Y'); // 30-Dec-2011

Verweise:


112
2017-12-30 05:33



Benutzerdefinierte Formatierungsfunktion:

Für feste Formate, eine einfache Funktion machen den Job. Das folgende Beispiel generiert das internationale Format YYYY-MM-DD:

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1; //Month from 0 to 11
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

Das OP-Format kann wie folgt generiert werden:

function dateToYMD(date) {
    var strArray=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var d = date.getDate();
    var m = strArray[date.getMonth()];
    var y = date.getFullYear();
    return '' + (d <= 9 ? '0' + d : d) + '-' + m + '-' + y;
}
console.log(dateToYMD(new Date(2017,10,5))); // Nov 5

Hinweis: Es ist jedoch normalerweise keine gute Idee, die JavaScript-Standardbibliotheken zu erweitern (z. B. indem Sie diese Funktion dem Prototyp von Date hinzufügen).

Eine erweiterte Funktion könnte eine konfigurierbare Ausgabe basierend auf einem Formatparameter erzeugen.

Wenn das Schreiben einer Formatierungsfunktion zu lange dauert, gibt es eine Menge Bibliotheken, die das tun. Einige andere Antworten listen sie bereits auf. Aber zunehmende Abhängigkeiten haben auch einen Gegenpart.

Standard-ECMAScript-Formatierungsfunktionen:

Seit neueren Versionen von ECMAScript, der Date Die Klasse hat einige spezifische Formatierungsfunktionen:

toDateString: Implementierungsabhängig, zeige nur das Datum an.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.todatestring

new Date().toDateString(); // e.g. "Fri Nov 11 2016"

toISOString: Zeigt ISO 8601 Datum und Uhrzeit an.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.toisostring

new Date().toISOString(); // e.g. "2016-11-21T08:00:00.000Z"

zuJSON: Zeichenkette für JSON.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tojson

new Date().toJSON(); // e.g. "2016-11-21T08:00:00.000Z"

toLocaleDateString: Implementierungsabhängig, ein Datum im Gebietsschemaformat.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaledatestring

new Date().toLocaleDateString(); // e.g. "21/11/2016"

toLocaleString: Implementierungsabhängig, ein Datum und eine Uhrzeit im Gebietsschemaformat.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocalestring

new Date().toLocaleString(); // e.g. "21/11/2016, 08:00:00 AM"

toLocaleTimeString: Implementierungsabhängig, eine Zeit im Gebietsschemaformat.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tolocaletimestring

new Date().toLocaleTimeString(); // e.g. "08:00:00 AM"

zuString: Generisch toString for Date.

http://www.ecma-international.org/ecma-262/7.0/index.html#sec-date.prototype.tostring

new Date().toString(); // e.g. "Fri Nov 21 2016 08:00:00 GMT+0100 (W. Europe Standard Time)"

Hinweis: Aus diesen Formatierungen kann eine benutzerdefinierte Ausgabe generiert werden>

new Date().toISOString().slice(0,10); //return YYYY-MM-DD

Beispiele Snippets:

console.log("1) "+  new Date().toDateString());
console.log("2) "+  new Date().toISOString());
console.log("3) "+  new Date().toJSON());
console.log("4) "+  new Date().toLocaleDateString());
console.log("5) "+  new Date().toLocaleString());
console.log("6) "+  new Date().toLocaleTimeString());
console.log("7) "+  new Date().toString());
console.log("8) "+  new Date().toISOString().slice(0,10));


109
2018-04-12 09:09



Plain JavaScript ist die beste Wahl für kleine Online-Nutzer.

Auf der anderen Seite, wenn Sie mehr Datum Zeug brauchen, MomentJS ist eine großartige Lösung.

Beispielsweise:

moment().format('YYYY-MM-DD HH:m:s');     // now() -> 2015-03-24 14:32:20
moment("20111031", "YYYYMMDD").fromNow(); // 3 years ago
moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago
moment().startOf('day').fromNow();        // 11 hours ago
moment().endOf('day').fromNow();          // in 13 hours

88
2017-12-24 10:15



In modernen Browsern (*)Du kannst das einfach tun:

var today = new Date().toLocaleDateString('en-GB', {
    day : 'numeric',
    month : 'short',
    year : 'numeric'
}).split(' ').join('-');

Ausgabe bei heutiger Ausführung (24. Jänner 2016):

'24-Jan-2016'

(*)  Laut MDN"Moderne Browser" bedeutet Chrome 24+, Firefox 29+, Internet Explorer 11, Edge 12+, Opera 15+ und Safari nächtlich gebaut.


80
2018-01-24 21:09



Sie sollten es sich ansehen date.js. Es gibt viele praktische Helfer für die Arbeit mit Daten, zum Beispiel in Ihrem Fall:

var date = Date.parse('2010-08-10');
console.log(date.toString('dd-MMM-yyyy'));

Anfangen: http://www.datejs.com/2007/11/27/getting-started-with-datejs/


48
2017-12-30 08:10