2013-12-17 4 views
0

Может кто-нибудь помочь мне понять, почему я получаю вывод, который я получаю от этой функции JavaScript?Поиск предыдущей и следующей даты

mod.getAdjacentDates = function (year, month, date) { 
    var prevDate = new Date(year, month, date); 
    var nextDate = new Date(year, month, date); 

    prevDate.setDate(date - 1); 
    nextDate.setDate(date + 1); 

    var data = { 
     prevDate: prevDate.getDate(), 
     prevMonth: prevDate.getMonth() + 1, 
     prevYear: prevDate.getFullYear(), 
     nextDate: nextDate.getDate(), 
     nextMonth: nextDate.getMonth() + 1, 
     nextYear: nextDate.getFullYear() 
    }; 

    alert(year + '-' + month + '-' + date + ' ' + JSON.stringify(data)); 

    return data; 
}; 

Выход я получаю из предупреждения является:

2013-12-17 
{ 
    "prevDate":16, 
    "prevMonth":1, 
    "prevYear":2014, 
    "nextDate":20, 
    "nextMonth":6, 
    "nextYear":2014 
} 

Я ожидал получить следующий вывод:

2013-12-17 
{ 
    "prevDate":16, 
    "prevMonth":12, 
    "prevYear":2013, 
    "nextDate":18, 
    "nextMonth":12, 
    "nextYear":2013 
} 
+1

дата - строка в аргументах? –

+1

Это не выход, который я получаю: http://jsfiddle.net/nFbBW/ – Moob

+0

@eicto может иметь смысл здесь, я думаю, что моя вторая дата пытается установить дату на «171». Привет, ребята! –

ответ

2

При попытке кода я получаю:

{ 
    "prevDate":16, 
    "prevMonth":1, 
    "prevYear":2014, 
    "nextDate":18, 
    "nextMonth":1, 
    "nextYear":2014 
} 

Вы должны вычесть один из месяца при создании даты также:

var prevDate = new Date(year, month - 1, date); 
var nextDate = new Date(year, month - 1, date); 

Если вы создаете дату со значением месяца от 12, он прольется в год, чтобы он стал датой в январе следующего года.

+0

Спасибо, это выглядит намного лучше, теперь 'prevDate' взлетает, но не' nextDate'? –

+0

@AdrianThompsonPhillips: Если вы не получили правильную следующую дату, то ваш фактический код отличается от того, что вы опубликовали. Я получаю правильную дату, когда тестирую ее: http://jsfiddle.net/Guffa/s3D62/ – Guffa

1

#.getMonth() равна нулю основе, в то время как остальные 1 на основе.

Смежные вопросы