2016-11-15 3 views
0

Cant zu akzeptieren scheinen Figur, warum diesemoment.js nicht "31 \ Oktober \ 2016" als Datum

moment("30\\Nov\\2016 22:14","DD\\MM\\YYYY HH:mm").toString() 

arbeitet (Das Ergebnis ist "Wed Nov 30 2016 22:14:00 GMT+0000")

und dies nicht

funktioniert
moment("31\\Oct\\2016 22:14","DD\\MM\\YYYY HH:mm").toString() 

(Das Ergebnis ist "Invalid date").

Hat jemand eine Idee, warum das passiert?

bearbeiten

verändert das Datum oben

bearbeiten 2

diese Schnipsel versucht

moment("30\\Jan\\2016 22:14","DD\\MMM\\YYYY HH:mm").toString()

result = "Wed Nov 30 2016 22:14:00 GMT+0000"

das ist seltsam

+1

Ihr erster Ausschnitt scheint auch nicht zu funktionieren - '30 \\ Oct' sollte nicht zu' Nov 30' zugeordnet werden. –

+0

Schauen Sie auf das Ergebnis, "Wed Nov", und November 2016 hat keine 31 Tage –

+0

Lesen Sie die Dokumente sieht es aus wie Sie Bindestriche im Formatierungsteil verwenden müssen (z. B. keine Schrägstriche oder Doppelpunkt). –

Antwort

1

Ein paar Fragen hier:

Erstens Ihr Datumsformat Schrägstriche ein Problem verursacht (Einzel- oder Doppelschrägstriche beide führen zu unterschiedlichen Themen) in bestimmten Fällen verwendet wird. Ich bin nicht sicher, was genau das Problem ist, da das erste Beispiel funktioniert, aber ich vermute, dass es sich um eine Art Escape-Sequenz handelt.

Zweitens, "MM" ist das falsche Token, um kurze Monatsnamen zu analysieren. Es sollte "MMM" sein. Es scheint Zufall, dass es für Ihre "Nov" -Strange funktioniert, wenn Sie "MM" verwenden, aber es funktioniert sicherlich nicht für "Oct" oder die meisten anderen.

Wenn Sie Ihre Datenquelle ändern können, um Daten mit einem anderen Trennzeichen (/ oder - sind ziemlich Standard), dann tun Sie das. Ist dies nicht der Fall, müssen Sie möglicherweise eine Zeichenersetzung an der Datumszeichenfolge vornehmen, bevor Sie sie an momentJS übergeben.

Beispiele für Strings, die nicht (entweder nicht die richtigen Daten erzeugen, oder „Invalid Date“ berichten) arbeiten:

"31\\Oct\\2016 22:14","DD\\MMM\\YYYY HH:mm" 
"31\Oct\2016 22:14","DD\MMM\YYYY HH:mm" 
"31/Oct/2016 22:14","DD/MM/YYYY HH:mm" 

Wie Sie sehen können, ist es fast bis zu dem Punkt einer parseable Zeichenfolge, entwickelte sich die würde aussehen wie:

"31/Oct/2016 22:14","DD/MMM/YYYY HH:mm" 
+0

kann die Datenquelle nicht ändern ..... – molleman

+0

dann schlage ich vor, dass Sie einen Ersatz für die Zeichenfolge ausführen, um \\ in/Out zu konvertieren von Interesse, welche Datenquelle produzierte eine abscheuliche Schnur wie das? – ADyson

+1

Moment ("31 \\ Oct \\ 2 016 22:14 "," DD \\\\ MMM \\\\ YYYY HH: mm "). ToString() funktioniert – molleman

Verwandte Themen