vendredi 20 février 2015

ISO 8601 Date JS Interpretation Difference - IE/FF versus Chrome


Why do IE/FF and Chrome javascript engines differ on how to interpret this Date format (YYYY-MM-DDTHH:mm:ss.fff) without the timezone designator?



new Date("2015-02-18T15:43:57.803").getUTCHours()


UTC Hours



Chrome: 15

IE11/FF: 21



I don't understand this - is it because Chrome assumes it's local whereas IE/FF assume it's UTC? This seems like a Chrome bug.


Interestingly - appending a "Z" to the end of the string tells both Chrome and IE/FF that the time is UTC and they can agree. Has anyone else noticed this javascript implementation discrepancy with Date?



new Date("2015-02-18T15:43:57.803Z").getUTCHours()


UTC Hours



Chrome: 15

IE11/FF: 15



Ultimately - this is the result of the out-of-box serializer for ASP.NET Web API, which I thought used JSON.NET, but now appears to be internal where JSON.NET uses IsoDateTimeConverter .


Checking GlobalConfiguration.Configuration.Formatters.JsonFormatter tells me we're using JsonMediaTypeFormatter . Is Web API not using JSON.NET serializer out of the box?


This is a boon for Web API people - at least back in ASP.NET MVC we had a consistent date format (albeit proprietary - /Date(number of ticks)/ ) via the JavascriptSerializer





Aucun commentaire:

Enregistrer un commentaire