2017-01-19 10 views
1

Я использовал плагин под названием jQRnageSlider и попытался получить ярлык даты и времени, показанный на слайдере, но когда я прокручу назад ползунок до прошлого года, месяц 12 окажется в конечном итоге 11.Как получить дату за месяц до текущей даты, когда текущая дата - январь?

enter image description here

Нормальный случай, если я не прокручивать назад и в прошлом году.

enter image description here

Он подскочил до ноября 2016 года сразу

Это должно быть вопрос о проблеме форматирования даты. Может ли кто-нибудь помочь?

$(".date-range-slider").dateRangeSlider({  
    ... 

    formatter: function(val){ 
    var days = ('0' + val.getDate()).slice(-2), 
    month = ('0' + val.getMonth() + 1).slice(-2), 
    year = val.getFullYear(), 
    hour = ('0' + val.getHours()).slice(-2), 
    min = ('0' + val.getMinutes()).slice(-2); 
    return days + "-" + month + "-" + year + " " + hour + ":" + min; 
    } 
}); 
+0

При использовании функции даты/времени, много через приложение, я рекомендую смотреть на moment.js - это решит многие из этих проблем для вас. – MickRip

+1

Проблема может быть здесь '('0' + val.getMonth() + 1)', потому что сначала идет конкатенация строки '('0' + month)', которая приводит к строке, а затем вы добавляете другую '1' в эту строка. Вероятно, вы хотите '('0' + (val.getMonth() + 1))'. – Rafael

+0

Ваша функция работает нормально: https://jsfiddle.net/86hdnnno/ Возможно, аргумент «val» не имеет месяца 11 в декабре? – Potray

ответ

0

Проблема заключается в том, что линия:

Вы хотите суммировать это математически не как строки, так что вы должны сделать:

month = ('0' + (val.getMonth() + 1)).slice(-2)

Проверьте фрагмент кода на см., что ваш код действительно возвращается:

var val = new Date(); 
 
document.write('0' + val.getMonth() + 1)

И что возвращает исправленная версия:

var val = new Date(); 
 
document.write('0' + (val.getMonth() + 1))

+0

Да, я тоже это нашел. Глупая ошибка. Спасибо, в любом случае –

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

  • Нет связанных вопросов^_^