JavaScript日期适用于除iPhone/iPod Touch之外的所有浏览器

问题描述:

我有一些代码可以在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(虽然这是我的理解是,该功能将处理多种格式)。

我通过传递“自时代以来的毫秒数”而不是此格式的日期字符串来解决它。

移动Safari中一定有一些bug,因为我有这个问题,除了iOS设备之外,它都可以工作。它不能正确解析有效的ISO日期时间值(例如'2011-10-09T14:00:00.0000000 + 01:00')。

使用UNIX时间戳的问题,尽管它适用于新的Date().setTime()方法;时间转换为UTC,所以如果您的应用程序不能处理UTC偏移量,它将显示错误的时间。尤其是,如果日期时间是指未来某个日期,或者在夏令时发生变化的时间段内,则纪元时间戳中的时间将不正确。这就是为什么时间戳不用于存储日期时间值的原因。

我可以解决这个问题的唯一解决方法是将日期对象拆分为包含它的属性的JSON对象,然后将它们重新构建到Date()对象中。