2012-10-26 15 views
19

JavaScript relativamente semplice qui, non so perché IE mi odia (trattare gli altri come si vuole essere trattato suppongo).Javascript non valido Data Errore in Internet Explorer

var newDate = new Date("2012, 11, 2 19:30:00:000"); 
alert(newDate); 

Questo funziona in Chrome e FF, ma IE uscite "Invalid Data"

Fiddle me questo: http://jsfiddle.net/k6yD6/

+1

In realtà ottengo anche una data non valida in Firefox (ultima versione, 16.0.1). –

+2

Assicurati solo di utilizzare un formato supportato correttamente. Questa domanda è stata posta molte volte in precedenza, http://stackoverflow.com/questions/3020508/ie-javascript-date-parsing-error –

+1

per IE la sua dataObj = new Date (anno, mese, data [, ore [, minuti [, secondi [, ms]]]]) – Amitd

risposta

30

La stringa assegnata al costruttore data should be an RFC2822 or ISO 8601 formatted date. Nel tuo esempio non lo è. Provare quanto segue:

new Date("2012-11-02T19:30:00.000Z"); 

o utilizzando un alternate constructor:

new Date(2012, 11, 2, 19, 30, 0) 
+0

grazie, il costruttore alternativo funziona comunque il primo che hai elencato non sembra in qualsiasi browser – dougmacklin

+0

@DougieBear Risposta aggiornata - Mi ero perso lo zero richiesto prima del giorno –

+0

new Date ("2012-11-02T19 : 30: 00.000Z "); I millisecondi possono essere omessi, ma se inclusi devono essere preceduti da un punto, non da due punti. – kennebec

7

IE non sembra supportare millisecondo e mesi di stringa numerica. Prova questo:

new Date("November 2, 2012 19:30:00"); 

o

new Date(year, month, day, hours, minutes, seconds, milliseconds) 
+1

'new Date (" 2 novembre 2012 19:30:00 ");' - Questo mi ha fatto risparmiare molto dolore. – dexterb

1

a lavorare in IE, la data deve essere in formato corretto. Ho risolto lo stesso problema utilizzando il formato seguente:

var tDate = new Date('2011'+"-"+'01'+"-"+'01'); //Year-Month-day 
+0

Quando ho passato questo formato di anno-mese-giorno nel mio codice, ha risolto il problema ... devo darti un 1 up.Tuttavia, non avevo bisogno della nuova data, basta cambiare il formato come stringa e la data è apparsa correttamente sul lato server tramite IE 11. – Clarence

-1

Avevo lo stesso problema con Internet Explorer. Questo è come mi è stato di formattare la data e l'ora inizialmente,

function formatDateTime(date, formatString = 'MM/DD/YYYY hh:mm A') { 
    return moment(new Date(date)).format(formatString); 
} 

Il problema era con new Date(). L'ho appena rimosso poiché era già una data UTC. Quindi è solo,

return moment(date).format(formatString); 

questo ha lavorato per me in tutti i browser tra cui IE.

+0

OP non menziona l'uso della libreria moment.js. – user2954463

Problemi correlati