問題描述
今天給網站增加統計功能,其中一個功能為網站運行時間:
此功能通過當前時間和建站時間算差后計算網站運行時間為n年n天n時n分n秒,代碼寫完后測試瀏覽器顯示效果時發現,非IE瀏覽器內核均正常顯示,IE瀏覽器下顯示效果的時候發現結果顯示為:undefined年undefined天undefined時undefined分undefined秒
經過排查,發現在IE11下,new Date("2017-09-01 15:16:16")返回undefined。
解決問題
方法一:自定義方法
自定義一個NewDate方法:
function NewDate(str){ if(!str){ return 0; } arr=str.split(" "); d=arr[0].split("-"); t=arr[1].split(":"); var date = new Date(); date.setUTCFullYear(d[0], d[1] - 1, d[2]); date.setUTCHours(t[0], t[1], t[2], 0); return date; }
方法二:通過Date.parse()方法
' 2017-09-01 15:16:16'是無法被各個瀏覽器中,使用new Date(str)來正確生成日期對象的。 正確的用法是' 2017/09/01 15:16:16'。
基於'/'格式的日期字符串,才是被各個瀏覽器所廣泛支持的,‘-’連接的日期字符串,則是只在chrome下可以正常工作。
var timestart = new Date(Date.parse('2017-09-01 15:16:16'.replace(/-/g,"/")))
參照:https://blog.csdn.net/wqiancangq/article/details/52484806
