javascript che dà data sbagliata dopo la conversione da string a data in IE 8

Sto avendo data dalla mia applicazione nel formato ad esempio.

2013-05-01T00:00:00

quando sto convertendo questo a Data

 var d = '2013-05-01T00:00:00' var result = new Date(d); 

ottenendo result come NaN

quando io faccio,

var result = new Date(d.replace(/-/g, '/'));

ottenendo risultati come,

Tue Apr 30 22:30:00 UTC+0530 2013

che cosa potrebbe essere la ragione per cui sto ottenendo la data 1 giorno prima ..

Dovresti sempre analizzare le stringhe di date, i browser sono notoriamente cattivi. Per esempio, alcuni browser tratteranno '2013-05-01T00: 00: 00' come UTC e altri come locali. Dovrebbe essere trattato come UTC (poiché il fuso orario è mancante), quindi:

 function parseDateString(s) { s = s.match(/\d+/g); return new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5], (s[6] || 0)); } 

che creerà un object di date utilizzando i valori di cui sopra come UTC e con un offset di fuso orario in base alle impostazioni di sistema correnti. Quindi, se il fuso orario attuale è UTC + 0530, dovresti get l'equivalente di:

 2013-05-01T05:30:00+0530 

tuttavia sembra che stiate ottenendo un valore per UTC-0130. Non ho idea di questo.

Oh, quando lo fai:

 new Date(d.replace(/-/g, '/')); 

si sta totalmente bloccando la string in modo che non sia una string ISO 8601 e si è completamente a dispetto di un parser di data dipendente dell'esecuzione (ovvero each implementazione può essere diversa, se è ansible).