2013-07-25 9 views
7

im usando la libreria di date momento js per formattare una data, ma su IE ottengo un NaN sull'output. Funziona bene su altri browser, come Chrome, FF, ecctime js data library, la formattazione su IE dà un NaN

var value = "2015-11"; 

moment(value).format("YYYY-DD-01 00:00")  
> "0NaN-NaN-01 00:00" 

sono stato in grado di risolvere il problema con l'aggiunta dello stesso modello su momento costruttore come di seguito:

> moment(value,"YYYY-DD-01 00:00").format("YYYY-DD-01 00:00") 
"2015-11-01 00:00" 

E 'una buona pratica per aggiungere questo modello al costruttore, per tutti gli oggetti momento creazione in modo che possa funzionare anche su IE?

risposta

7

Il formato di ingresso deve corrispondere a ciò che si sta fornendo:

var value = "2015-11"; 
moment(value, "YYYY-MM") 

Se si desidera formattare in modo diverso per uscita, che quando si utilizza il metodo .format.

var value = "2015-11"; 
var m = moment(value, "YYYY-MM") 
var s = m.format("YYYY-MM-DD HH:MM") 

Nota che stavate specificando DD, che è il giorno di formattazione. Ma in base all'utilizzo, penso che intendessi per MM per mese.

+0

Risposta molto buona, grazie per la soluzione. Puoi dire perché è successo solo in IE –

+0

L'analisi non standard senza fornire un formato di input ritorna al browser, che è specifica dell'implementazione e varia da un browser all'altro, motivo per cui dovresti sempre fornire un formato di input. –

+0

grazie @matt per fornirmi un ragionamento –