1. 程式人生 > >蘋果IOS瀏覽器上時間格式不相容Date問題

蘋果IOS瀏覽器上時間格式不相容Date問題

解決方案:

但是在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, "/"))