1512 Stimmen

Wo finde ich eine Dokumentation zur Formatierung eines Datums in JavaScript?

Ich habe festgestellt, dass die JavaScript new Date() Funktion ist sehr intelligent, da sie Datumsangaben in verschiedenen Formaten akzeptiert.

Xmas95 = new Date("25 Dec, 1995 23:15:00")
Xmas95 = new Date("2009 06 12,12:52:39")
Xmas95 = new Date("20 09 2006,12:52:39")

Ich konnte nirgends eine Dokumentation finden, die alle gültigen String-Formate beim Aufruf von new Date() Funktion.

Dies dient der Umwandlung einer Zeichenkette in ein Datum. Wenn wir uns die andere Seite ansehen, also die Umwandlung eines Datumsobjekts in eine Zeichenkette, hatte ich bisher den Eindruck, dass JavaScript keine eingebaute API hat, um ein Datumsobjekt in eine Zeichenkette zu formatieren.

Anmerkung der Redaktion: Der folgende Ansatz ist der Versuch des Fragestellers, der mit einem bestimmten Browser funktioniert, aber nicht no Arbeit im Allgemeinen; siehe die Antworten auf dieser Seite um einige konkrete Lösungen zu sehen.

Heute habe ich mit dem toString() Methode für das Datumsobjekt und dient überraschenderweise der Formatierung des Datums in Zeichenketten.

var d1 = new Date();
d1.toString('yyyy-MM-dd');       //Returns "2009-06-29" in Internet Explorer, but not Firefox or Chrome
d1.toString('dddd, MMMM ,yyyy')  //Returns "Monday, June 29,2009" in Internet Explorer, but not Firefox or Chrome

Auch hier konnte ich keine Dokumentation über all die Möglichkeiten finden, wie wir das Datumsobjekt in eine Zeichenkette formatieren können.

Wo befindet sich die Dokumentation, in der die Formatbezeichner aufgeführt sind, die von der Date() Objekt?

172 Stimmen

Ihre Beispiele funktionieren nicht so, wie Sie es sich vorstellen: jsfiddle.net/edelman/WDNVk/1

30 Stimmen

Sorry, Übergabe Format Zeichenfolgen in toString funktioniert in .NET, und es kann in Java funktionieren, aber wie Jason darauf hingewiesen, dies funktioniert nicht wirklich in Javascript.

18 Stimmen

Die Leute erinnern sich - Fragen, egal wie kanonisch, müssen Fragen bleiben . Bitte unterlassen Sie jede Bearbeitung, die diese Frage in eine Antwort umwandelt, verfeinern und pflegen Sie die antwortet stattdessen. Danke :)

1130voto

Haim Evgi Punkte 119384

Ich liebe 10 Möglichkeiten zur Formatierung von Uhrzeit und Datum mit JavaScript et Arbeiten mit Daten .

Im Grunde gibt es drei Methoden, und Sie müssen die Strings selbst kombinieren:

getDate() // Returns the date
getMonth() // Returns the month
getFullYear() // Returns the year

Beispiel:

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth() + 1; //Months are zero based
var curr_year = d.getFullYear();
console.log(curr_date + "-" + curr_month + "-" + curr_year);

35 Stimmen

Beide Websites haben restriktive Lizenzen. Wenn Sie also den Code (ohne Erlaubnis) verwenden, verstoßen Sie dagegen. Momentjs ( stackoverflow.com/a/10119138/278976 ) sieht wie eine viel bessere Option aus und steht unter MIT-Lizenz.

1 Stimmen

@McKay die Frage speziell über String-Formate, eine Nicht-Standard-JS-Funktion gefragt

4 Stimmen

@peller Diese Antwort beantwortet die Frage "Wie formatiere ich Datumsangaben in Javascript?", was eigentlich der Titel der Frage ist. Im Hauptteil der Frage wird er ziemlich in die Irre geführt. Und, um Ihren Punkt, diese Antwort spricht nicht über String-Formatierung mit zufälligen Nicht-Standard oder nicht erwähnt Bibliotheken. Aber dieser Teil der Frage wurde falsch gestellt, wie der Kommentar Nr. 1 zu dieser Frage zeigt. Dies beantwortet also die eigentliche Frage, aber nicht die Formatierungszeichenfolgen, die eigentlich nicht existieren.

686voto

chx007 Punkte 7299

Moment.js

Es ist eine (leichtgewichtige)* JavaScript-Datumsbibliothek zum Parsen, Manipulieren und Formatieren von Daten.

var a = moment([2010, 1, 14, 15, 25, 50, 125]);
a.format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm"
a.format("ddd, hA");                       // "Sun, 3PM"

(*) leichtgewichtig, d.h. 9.3KB minified + gzipped in der kleinstmöglichen Konfiguration (Feb 2014)

7 Stimmen

Dies bietet auch ein Dekorator-Muster um das Date-Objekt herum, anstatt das Kernobjekt in die Mangel zu nehmen, so dass es weniger wahrscheinlich ist, dass es zu Konflikten auf dem Weg kommt.

4 Stimmen

Ich glaube, ich habe noch nie eine Bibliothek in jede Programmiersprache/Umgebung, die ihren Zweck so perfekt erfüllt. Auch die Dokumente sind umfangreich und wirklich gut. Ich bin wirklich froh, dies gefunden zu haben, weil Datumsangaben in der Vergangenheit ein Schmerz gewesen sind, um damit umzugehen (obwohl Datejs die Situation für mich etwas verbessert hat).

0 Stimmen

FWIW, moment.min.js ist derzeit auf 14,3 KB.

430voto

casid Punkte 4373

Wenn Sie bereits mit jQuery UI in Ihrem Projekt, können Sie die eingebaute Datepicker-Methode zur Formatierung Ihres Datumsobjekts verwenden:

$.datepicker.formatDate('yy-mm-dd', new Date(2007, 1 - 1, 26));

Der Datepicker formatiert jedoch nur Datumsangaben und kann keine Zeitangaben formatieren.

Werfen Sie einen Blick auf jQuery UI datepicker formatDate , die Beispiele.

0 Stimmen

Wie kann ich einstellen, dass die lokale Zeit oder Zulu verwendet wird?

7 Stimmen

Ich bevorzuge diese Lösung in der Lage, die Zeit ohne jede Bibliothek zu erhalten: new Date().toTimeString().match( /^([0-9]{2}:[0-9]{2}:[0-9]{2})/ )[0] FYI

0 Stimmen

Gibt es eine Möglichkeit, dies zu tun. $.datepicker.formatDate('yy-mm-dd', new Date("txtAdvDate".Val()); oder so ähnlich

244voto

Adrian Maire Punkte 12847

Benutzerdefinierte Formatierungsfunktion:

Bei festen Formaten reicht eine einfache Funktion aus. Das folgende Beispiel erzeugt das internationale Format JJJJ-MM-TT:

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

Hinweis: Es ist jedoch in der Regel keine gute Idee, die Javascript-Standardbibliotheken zu erweitern (z. B. durch Hinzufügen dieser Funktion zum Prototyp von Date).

Eine erweiterte Funktion könnte eine konfigurierbare Ausgabe auf der Grundlage eines Formatparameters erzeugen. Auf der gleichen Seite finden Sie einige gute Beispiele.

Wenn es zu langwierig ist, eine Formatierungsfunktion zu schreiben, gibt es viele Bibliotheken, die diese Aufgabe übernehmen. Einige andere Antworten haben sie bereits aufgezählt. Aber zunehmende Abhängigkeiten haben auch ihr Gegenstück.

Standard ECMAScript Formatierungsfunktionen:

Seit neueren Versionen von ECMAscript ist die Date Klasse verfügt über einige spezifische Formatierungsfunktionen:

toDateString : Implementierungsabhängig, zeigt 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 : ISO 8601 Datum und Uhrzeit anzeigen.

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"

toJSON : Stringifier 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 lokalen Format.

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 lokalen Format.

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 lokalen Format.

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

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

toString : Generischer toString für Date.

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

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

Hinweis: Es ist möglich, aus diesen Formatierungsfunktionen benutzerdefinierte Ausgaben zu erzeugen:

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

13 Stimmen

Diese Antwort sollte akzeptiert werden, da sie das erforderliche Format enthält (01-01-2000, nicht 1-1-2000)

6 Stimmen

New Date().toISOString().slice(0,10) // "2015-04-27"

3 Stimmen

Es wäre sehr hilfreich, das Beispiel mit dem 11. September nicht zu haben, damit es klar ist, an welcher Stelle Tag und Monat dargestellt werden.

219voto

Scott Offen Punkte 6343

Wo befindet sich die Dokumentation, in der die Formatbezeichner aufgeführt sind, die von der Date() Objekt?

Ich bin heute darüber gestolpert und war ziemlich überrascht, dass sich niemand die Zeit genommen hat, diese einfache Frage zu beantworten. Es stimmt, es gibt viele Bibliotheken, die bei der Datumsmanipulation helfen. Einige sind besser als andere. Aber das war nicht die Frage, die gestellt wurde.

AFAIK, reines JavaScript unterstützt keine Formatspezifikationen die Art und Weise, wie Sie sie verwenden möchten . Es unterstützt jedoch Methoden zur Formatierung von Datums- und/oder Zeitangaben, wie z. B. .toLocaleDateString() , .toLocaleTimeString() y .toUTCString() .

El Date Die von mir am häufigsten verwendete Objektreferenz befindet sich auf der w3schools.com Website (aber eine schnelle Google-Suche werden Sie viele weitere finden, die Ihren Bedürfnissen besser entsprechen könnten).

Beachten Sie auch, dass die Eigenschaften des Datumsobjekts Abschnitt bietet einen Link zu prototype die einige Möglichkeiten aufzeigt, wie Sie das Date-Objekt mit benutzerdefinierten Methoden erweitern können. Es wurde gewisse Debatte in der JavaScript-Gemeinschaft im Laufe der Jahre darüber, ob dies die beste Praxis ist oder nicht, und ich spreche mich weder dafür noch dagegen aus, sondern weise nur auf ihre Existenz hin.

26 Stimmen

MDN ist auch eine hervorragende Referenz: developer.mozilla.org/de-US/docs/Web/JavaScript/Reference/

2 Stimmen

In meiner Antwort habe ich versucht, auch auf diese Frage einzugehen. Ich glaube, dass Firefox- oder Mozilla-Browser einst eine Date.toString()-Methode zur Verfügung stellten, die eine solche Formatierungszeichenfolge verarbeiten konnte. Leider kann ich keine Spur der alten Dokumentation finden. Sie ist nicht mehr Teil des Standards und scheint nirgendwo mehr unterstützt zu werden, auch nicht in Firefox.

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