2014-02-07 68 views
1

我想取我的网站上的谷歌日历事件,并已成功实现了它。但是,当我检查了Safari浏览器,它显示NaN的的日期和未定义为一个月。下面是我的代码,我只是粘贴了我的整个代码副本。签发日期在Safari,IE

我编辑我的问题,因为我已经找到了问题:那么下面是问题和解决方法是在回答。

for (var i = 0; i < eventArray.length; i++) { 
    startDate = eventArray[i].start.date || eventArray[i].start.dateTime; 
    endDate = eventArray[i].end.date || eventArray[i].end.dateTime; 
    summary = eventArray[i].summary; 
    description = eventArray[i].description; 
    htmlLink = eventArray[i].htmlLink; 
    event_location = eventArray[i].location; 
    eventStartDate = new Date(startDate); 
    eventEndDate = new Date(endDate); 
    var isExist=false; 
+0

这是一个好主意,始终使用'和getFullYear()'和'调用setFullYear()' – Pointy

+0

你有更好的发布只针对您的问题相关的代码。它可能是日期格式问题?! –

+0

看看http://momentjs.com/,它会缓解日期操纵带来的一些痛苦。 – Magrangs

回答

0

下面是答案:

 for (var i = 0; i < eventArray.length; i++) { 
     startDate = eventArray[i].start.date || eventArray[i].start.dateTime; 
     endDate = eventArray[i].end.date || eventArray[i].end.dateTime; 
     summary = eventArray[i].summary; 
     description = eventArray[i].description; 
     htmlLink = eventArray[i].htmlLink; 
     event_location = eventArray[i].location; 

/* 在Safari中,我们必须拿出日,月和年独立,因为我在的startDate越来越日期,所以我分手,并说干就干*/

var parts = startDate.match(/(\d+)/g); 
    eventStartDate = new Date(parts[0], parts[1]-1, parts[2]) 

/**这里,是我面临早些时候eventStartDate =新的日期(的startDate)Safari浏览器无效的日期问题; **/

1

你有一个问题在这里的外观。

function getDateLowerLimit() { 
    var todayDate; 
    if (dateLowerlimit == "") { 
     todayDate = new Date(); 
     dateLowerlimit = todayDate.getFullYear() + "-" + (todayDate.getMonth() < 10 ? '0' : '') + (todayDate.getMonth() + 1) + "-" + (todayDate.getDate() < 10 ? '0' : '') + todayDate.getDate() + "T00:00:00+00:00" 
    } else { 
     todayDate = new Date(dateLowerlimit) 
    } 
} 

如果dateLowerlimit不是一个空字符串,则todayDate被设置功能的范围内,但它永远不会返回或使用。