蘋果IOS瀏覽器上時間格式不相容Date問題
阿新 • • 發佈:2019-01-08
解決方案:
但是在IOS版本里面的Safari解釋new Date('2013-10-21') 就不正確,在IOS的Safari中返回的永遠會是"Invalid Date"。
後來我在網上查找了資料,原來是低版本的Safari解釋new Date('2013-10-21')這個物件不一樣,在IOS中的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');
所以,如果你的時間格式不是你想要的請使用:time.replace(/-/g, "/")替換“-”為“/”或者time.replace(/./g, "/")替換“.”為“/“
function formatDate(date, format) { if (!date) return; if (!format) format = "yyyy-MM-dd"; switch (typeof date) { case "string": date = new Date(date.replace(/-/g, "/")); break; case "number": date = new Date(date); break; } if (!date instanceof Date) return; var dict = { "yyyy": date.getFullYear(), "M": date.getMonth() + 1, "d": date.getDate(), "H": date.getHours(), "m": date.getMinutes(), "s": date.getSeconds(), "MM": ("" + (date.getMonth() + 101)).substr(1), "dd": ("" + (date.getDate() + 100)).substr(1), "HH": ("" + (date.getHours() + 100)).substr(1), "mm": ("" + (date.getMinutes() + 100)).substr(1), "ss": ("" + (date.getSeconds() + 100)).substr(1) }; return format.replace(/(yyyy|MM?|dd?|HH?|ss?|mm?)/g, function () { return dict[arguments[0]]; }); }
轉換為您所需要的時間格式
這下就完美解決IOS中的問題了!哎,說了半天還是不太瞭解這種寫法的原理,在這裡期待大蝦解釋!
程式碼:
newDate('2011-04-12'.replace(/-/g, "/"))