2016-03-23 4 views
0

Wie kann ich ein Date-Objekt von einem Datum mit diesem Format zu erstellen:Wie ein Javascript-Datum von 12 Stunden erstellen Format

03/23/2016 02:00:00 PM

+0

Diese Frage [* viele, viele Male *] gefragt wurde (http://stackoverflow.com/search?q=%5Bjavascript%5Dparse+date+string). Manuelles Analysieren von Strings, entweder Schreiben einer Funktion oder Verwenden einer Bibliothek. ** Verwenden Sie NICHT den Date-Konstruktor oder Date.parse (sie sind äquivalent zum Parsen von Strings). Wenn Sie einen einfachen Parser und Formatierer verwenden möchten, betrachten Sie [* date-format.js *] (https://github.com/barbir/js-date-format/blob/master/js/date-format.js). – RobG

+0

Danke @RobG! Entschuldigung, ich wusste nicht, was ich ehrlich suchen sollte. Ich habe versucht, zu spezifisch, denke ich und habe nicht gefunden, was ich brauchte. – Brayan

Antwort

1

Das Date Objekt kann Strings analysieren: new Date('03/23/2016 02:00:00 PM')

Zum Beispiel:

var date = new Date('03/23/2016 02:00:00 PM') // => "Wed Mar 23 2016 14:00:00 GMT-0700 (PDT)" 
date.getFullYear() // => 2016 

Allerdings würde ich empfehlen, eine Bibliothek, die jemand anderes bereits Zeit unter Berücksichtigung der Grenzfälle, wie Zeitzonen verbracht hat, usw. (eine gute, die ich verwendet habe, ist moment.js).

Beachten Sie (von der moment.js docs):

Warnung: Browser-Unterstützung Strings zum Parsen inkonsistent ist. Da es keine Spezifikation gibt, welche Formate unterstützt werden sollen, funktionieren einige Browser in anderen Browsern nicht.

Für konsistente Ergebnisse, die andere als ISO 8601-Strings analysieren, sollten Sie String + Format verwenden.

+0

Die Dokumentation zu moment.js ist keine Autorität für ECMAScript, bitte verwenden Sie dazu ECMA-262. In diesem Fall ist die moment.js-Dokumentation falsch, die Unterstützung für eine begrenzte Auswahl an ISO 8601-Formaten wurde in ES5 eingeführt, die Unterstützung ist jedoch immer noch inkonsistent und nicht verlässlich. Auch aktuelle Browser analysieren ISO-Formate nicht korrekt. Geben Sie also ** immer ** das Format an oder verwenden Sie einen maßgeschneiderten Parser. – RobG

+0

@RobG gute Punkte, vielen Dank für die Erwähnung! –

1
var date = new Date("3/23/2016 02:00:00 PM"); 
console.log(date); 

Sie können dann auf alle Methoden des Date-Objekts zugreifen.

+0

Nein, tu das nicht. Das Parsen von Strings mit dem Date-Konstruktor (und Date.parse, es ist äquivalent) ist unzuverlässig. Tu es einfach nicht. – RobG

+0

@RobG - Danke, Sie machen einen ausgezeichneten Punkt. Wo der Code verwendet wird, ist eine wichtige Überlegung. Wenn es sich um ein kleines Lernprojekt handelt, ist die schnellste Lösung vielleicht die beste. Wenn es sich um eine professionelle Lösung handelt, sollte es unter strikter Einhaltung von Standards und Best Practices implementiert werden. – user2182349

1

Mit Blick auf MDN var date = new Date ('03/23/2016 14.00.00)

+0

MDN ist keine Autorität für irgendetwas, es ist ein (sehr hilfreiches) öffentliches Wiki, zu dem jeder beitragen kann. In der Sprachspezifikation ist es nicht erforderlich, dass diese Formatzeichenfolge überhaupt analysiert wird. – RobG

1

Sie so etwas wie date.js verwenden können: Ersteinsatz Skript, dann schreiben Datum:

<script type="text/javascript" src="http://www.datejs.com/build/date.js"></script> 
.... 
document.write(new Date().toString("dd:MM:yyyy hh:mm:ss tt")); 
+0

Parsing ** muss ** auch das Format enthalten, sonst sind die Ergebnisse unzuverlässig. – RobG

Verwandte Themen