¿Por qué obtengo un resultado incorrecto de la función?

Tengo esta matriz de objetos:

var data=[{Id:540, MeasureDate:"2016-06-27T15:06:47"}, {Id:541, MeasureDate:"2016-06-27T12:24:39"}]; 

Yo llamo a esta función:

 var latestdate = updateLatestDate(data); function updateLatestDate(sensorsData) { return new Date(Math.max.apply(null, sensorsData.map(function (e) { return new Date(e.MeasureDate); }))).toISOString(); } 

La función updateLatestDate devuelve la fecha más reciente y la convierte a ISOString() .

Pero el problema es que obtengo resultados diferentes si lo uso en Chrome y en IE11.

En Chrome, la variable latestdate es “2016-06-27T15: 06: 47.000Z”

En IE, la variable latestdate es “2016-06-27T12: 06: 47.000Z”

La función updateLatestDate funciona perfectamente en chrome pero devuelve un resultado incorrecto en IE , me parece que el problema podría estar en la función Math.max.apply .

¿Alguna idea de por qué obtengo resultados incorrectos en IE y cómo puedo solucionarlo?

La razón es que no tiene una zona horaria especificada en su marca de hora ISO8601. Chrome se establece de forma predeterminada en UTC e IE en local cuando no se especifica (o al revés, lo olvido).

Tu también puedes:

a) agregue ‘Z’ al final de su marca de tiempo para especificar UTC o agregue otra zona horaria (vea wikipedia para ver los formatos válidos https://en.m.wikipedia.org/wiki/ISO_8601 )

b) use momentjs que creo que estandarizará el comportamiento en los navegadores.

Como lo menciona el momento @elliot te puede ayudar. Compruebe esta solución:

 (function() { var data = [{ Id: 540, MeasureDate: "2016-06-27T13:06:47" }, { Id: 541, MeasureDate: "2016-06-27T12:24:39" }, { Id: 540, MeasureDate: "2016-06-27T13:16:47" }]; function getMaxInArray(items, max) { if (items.length) { var item = items.splice(0, 1)[0]; return getMaxInArray(items, Math.max(item, !!max ? max : item)); } return max; } var dates = data.map(function(x) { return moment(x.MeasureDate); }); var latest = moment(getMaxInArray(dates)); console.log(latest.format()); }()); 

http://plnkr.co:80/oeMDJYzDGkgm4cX4NIpo