new Date() iso不支持兼容性問題


   在IOS5以上版本(不包含IOS5)中的Safari瀏覽器能正確解釋出Javascript中的 new Date('2013-10-21') 的日期對象。
     但是在IOS5版本里面的Safari解釋new Date('2013-10-21') 就不正確,在IOS5的Safari中返回的永遠是"Invalid Date"。
     后來我在網上查找了資料,原來是低版本的Safari解釋new Date('2013-10-21')這個對象不一樣,在IOS5中的Safari不支持這種寫法,
     而它支持的寫法為new Date('2013','10','21'),這樣寫就能解決"Invalid Date"的問題,能返回一個Javascript Date回來了。
     但是隨之而來的問題有出現了,Date是返回過來了,可是這個Date對象中方法返回的數據可不是我想要的,返回的數據全都不正確。具體是什么原因我也不太清楚,還請知道原理的大蝦們指點下!
     現在返回過來的Date對象.getMonth()總要比正常的要多一個月!還有.getDay()返回的星期幾也不正確!╮(╯▽╰)╭懊惱啊,折磨啊。。。。
     我都開始罵開發Safari的這幫人了,不過罵歸罵問題還是要解決的,要不工資就木有了!呵呵!
     接着我查了很多國外的技術blog,終於找到了解決方案,原來想要IOS5中的Safari能正確解析new Date()那么必須這么寫
     new Date('2013/10/21');   或者  

var d = new Date(date);
d = d.getFullYear() > 0 ? d : new Date(Date.parse(date.replace(/-/g, "/")));

 

自己寫的一段代碼

this.state.clearTime = setInterval(()=>{

let date = new Date();

//this.props.desk_start_time從后台獲取的時間 '201612231933' 把他轉化成 2016/12/23 19:33
       let dateT = this.props.desk_start_time.replace(/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/,"$1/$2/$3 $4:$5");
//以毫秒為單位所以要除1000
let dateTime = (date - new Date(dateT))/1000;

}).1000}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM