2014-02-07 4 views
1

Я пытаюсь извлечь события календаря Google на свой сайт и успешно его реализовал. Но когда я проверил его для SAFARI, он показывал NaN для даты и undefined за месяц. Ниже мой код, я просто наклеил всю свою копию кода.Дата выпуска в 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; 

/* Для сафари, мы должны принять за дату, месяц и год в индивидуальном порядке, так как я получаю дату в STARTDATE, поэтому я раздвинул его и пошел вперед */

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

/** Здесь была Invalid дата выдачи для Safari, который я столкнулся ранее eventStartDate = новый дата (STARTDATE); **/

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 получает значение в пределах функции, но она никогда не возвращается или используется.