在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
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}對象