2010-03-10 44 views
4

我有一些代碼可以在JavaScript中使用日期。 這適用於IE,FF,Safari(桌面版本贏得& mac),Chrome,Opera。 在iPhone safari(移動探險)中,我收到了'無效日期'的迴應。JavaScript日期適用於除iPhone/iPod Touch之外的所有瀏覽器

管理日期的代碼是

 
    function fixDateFormat(dateText){ 
    var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/, 
     newDate = new Date(NaN), month, 
     parts = isoExp.exec(dateText); 

    if(parts) { 
     month = +parts[2]; 
     newDate.setFullYear(parts[1], month - 1, parts[3]); 
     if(month != newDate.getMonth() + 1) { 
     newDate.setTime(NaN); 
     } else { 
     newDate.setHours(0, 0, 0, 0); 
     } 
    } 
    return newDate; 
    } 

凡DATEFORMAT送入該功能爲Y-M-d(雖然這是我的理解是,該功能將處理多種格式)。

回答

0

我通過傳遞「自時代以來的毫秒數」而不是此格式的日期字符串來解決它。

0

移動Safari中一定有一些bug,因爲我有這個問題,除了iOS設備之外,它都可以工作。它不能正確解析有效的ISO日期時間值(例如'2011-10-09T14:00:00.0000000 + 01:00')。

使用UNIX時間戳的問題,儘管它適用於新的Date().setTime()方法;時間轉換爲UTC,所以如果您的應用程序不能處理UTC偏移量,它將顯示錯誤的時間。尤其是,如果日期時間是指未來某個日期,或者在夏令時發生變化的時間段內,則紀元時間戳中的時間將不正確。這就是爲什麼時間戳不用於存儲日期時間值的原因。

我可以解決這個問題的唯一解決方法是將日期對象拆分爲包含它的屬性的JSON對象,然後將它們重新構建到Date()對象中。

相關問題