一般 new Date() 可以解析此種日期格式,並建立日期物件。
例如:
var s ="2014-05-27T03:53:00.002+08:00"; var d= new Date(s); alert(d); //回傳日期物件,但 IE8以下 會回傳 NaN
IE8以下 new Date('ISO 8601日期格式') 會回傳 NaN,因為 IE8以下不支援 ISO 日期格式。
http://msdn.microsoft.com/zh-tw/library/ff743760%28v=vs.94%29.aspx
裡面說明有一段「Internet Explorer 8 標準模式和 Quirks 模式不支援 ISO 日期格式。」
要讓 IE8 以下也可以解析,只好自己拆日期字串,再給 new Date()
方法如下:
var s ="2014-05-27T03:53:00.002+08:00"; var d= new Date(s); if(isNaN(d)){ // 無法解析 s = s.split(/\D/); // 分割日期字串 d= new Date(s[0],s[1]-1,s[2],s[3],s[4],s[5]);//這一行改用以下兩行也可以 //s = s[0]+'/'+s[1]+'/'+s[2]+' '+s[3]+':'+s[4]+':'+s[5]; //d= new Date(s); alert(d); // 回傳日期物件 }
參考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
http://biostall.com/javascript-new-date-returning-nan-in-ie-or-invalid-date-in-safari
http://stackoverflow.com/questions/17592717/result-of-tojson-on-a-date-is-different-between-ie8-and-ie9
沒有留言:
張貼留言