2014-02-25 7 views
6

Moment ("05/1/11"). ToString() gibt "Mon May 01 1911" nicht 2011 wie erwartet zurück.Jahr im Moment JS standardmäßig 1900 statt 2000?

In Moment.js documentation sehe ich "zweistellige Jahr (wenn mehr als 68 wird 1900, sonst 2000)" mehrere Male (für Jahr, Woche und ISO Jahr).

Ich würde Moment erwarten, dies standardmäßig zu folgen, wenn ein Datum ohne ein Format analysiert wird, aber es nicht tut. Ist das ein Feature? Gibt es eine Möglichkeit, es zu zwingen, sich so zu verhalten (2000, wenn weniger als 68)?

Ich muss Freiform Benutzereingaben analysieren. Es könnte sein, 5/1/11 kann es 5. Juli 11 oder 6. Juli 2011 sein. So ist das einzige Format, das ich in Moment aufgehen möchte, für das Jahr-Feld, und dann nur, wenn ein vierstelliges Jahr nicht in gefunden wird Benutzereingabe.

Antwort

3

Wenn Sie keine Formatzeichenfolge angeben, wird die Analyse vom Browser verarbeitet (d. H. new Date(string)), nicht von Moment; Siehe die Dokumentation für moment(string) in den Dokumenten. Wenn Sie möchten, dass Moment das Parsing durchführt (und Regeln wie> 68 anwendet), müssen Sie die Formatzeichenfolge angeben.

var test = moment("05/1/11", "MM/D/YY").toString(); 
$('#date').append(test); 

http://jsfiddle.net/WBDDc/

Ausgang:

Sun May 01 2011 00:00:00 GMT-0400 
+1

oh mein, ich will nicht den Browser meine Daten Parsen !!! Jetzt muss ich alle Browser testen ... kennt jemand andere Datumsparsing-Bibliotheken, die kein Format benötigen, aber in allen Browsern gleich funktionieren würden? – gort

Verwandte Themen