2014-07-14 10 views
7

Memorizziamo tutti i dati di data in formato ISO utilizzando new Date(). ToISOString().node.js non può analizzare la data ISOString?

Ho provato a convertire questa data di formattazione ISO in oggetto Date in node.js ma ottengo una risposta Data non valida.

data stringa è isoDate = 2014-07-09T14:00:00.000Z e ho fatto console.log su Date.parse(isoDate); e new Date(isoDate); ma ognuno torna NaN e Invalid Date.

Ho controllato se la stringa della data contiene un carattere errato invisibile ma sono a posto e possono essere convertiti sulla console del browser.

significa che è necessario convertire la stringa manualmente e creare l'oggetto Date con una stringa analizzata?

Grazie per la lettura.

+0

funziona bene qui ... Sei sicuro isodate è una stringa? (e non - per esempio - un Buffer) – Bart

+0

Sì, ha appena fatto typeof check dice stringa. questa potrebbe essere la versione specifica? stiamo usando 0.10.29 al momento. –

+0

Sto usando la stessa versione. In ogni caso, dovrebbe funzionare in qualsiasi versione del nodo ... – Bart

risposta

1

Provare a utilizzare la libreria moment. Ha un sacco di funzionalità per lavorare con le date e può essere facilmente utilizzato sia lato client che lato server. Chiamando moment("2014-07-09T14:00:00.000Z").toDate() convertirai la tua stringa in un oggetto Date JavaScript, usando questa libreria.

0

Sto postando questa risposta nel caso in cui qualcuno lo sperimentasse come ho fatto io.

Quello che è successo a me è ho pensato che stavo inviando un'ISOString dal browser

{ 
    startDate: date.startDate 
} 

che in realtà stavo inviando un'istanza momento come parametro

Quando ho controllato nella finestra di ispezione rete ho trovato che i dati vengono inviati in formato ISO - sì, ma è racchiusa in virgolette ""

{ 
    startDate: "2016-12-31T16:00:00.000Z" 
} 

non dovrebbe essere racchiuso tra doppi qoutes e shou aspetto ld come questo

{ 
    startDate: 2016-12-31T16:00:00.000Z 
} 

cosa ha funzionato per me è quello di analizzare il momento di stringa iso

{ 
    startDate: date.startDate.toISOString() 
} 
Problemi correlati