Navigator 對象包含有關瀏覽器的信息。
navigator.userAgent 返回由客戶機發(fā)送服務器的 user-agent 頭部的值悍缠。
里邊包含了瀏覽器的名字卦绣,
safari包含的值是Safari。
chrome包含的值是Chrome扮休。
firefox包含的值是Firefox迎卤。
這三個瀏覽器都兼容的格式是:Date.parse("2018-01-11T20:00:00");
如果格式是"2018-01-11 20:00:00",我們可以直接替換空字符
let data = "2018-01-11 20:00:00";
new Date(data.replace(/\s/g, 'T'));
Chrome
>Date.parse("2018-01-11 20:00:00");
1515672000000
Safari
>Date.parse("2018-01-11 20:00:00");
NaN
同樣的日期字符串在Chrome解析正確,而在Safari返回NaN玷坠。
這個主要原因是Safari要求Date.parse()或Date()轉換日期的字符串需要滿足RFC2822 或ISO 8601定義的格式蜗搔。
ISO 8601定義的格式:
YYYY-MM-DDThh:mm:ss.sTZD
如果字符串不滿足格式劲藐,Date.parse()返回NaN,new Date()返回Invalid Date對象樟凄。
與例子里的字符串相比聘芜,ISO 8601要求在日期和時間之間需要使用字符“T”隔開。
如果兼容Safari缝龄,Chrome汰现,F(xiàn)irefox以及IE等,可以改為:
>Date.parse("2018-01-11T20:00:00");
可以注意到字符串“2018-01-11T20:00:00”是沒有時區(qū)信息的叔壤,默認情況下它會被轉換為本地時區(qū)的時間瞎饲。
如果需要使用UTC時間,可以在最后加上Z炼绘。
表示東8區(qū)晚上8點的UTC時間:
>Date.parse("2018-01-11T12:00:00Z");