2017-02-15 3 views
0

Мне нужно вычесть 1 день из строкового значения даты, которую я имею, , например, когда я вычитаю день с 2017/01/01 вместо получения 2016/12/31. Я заканчиваю до получения значения 2017/0/31.Вычитание дня из полной даты

Ниже приведен код, я работаю над:

   var inputDate = "2017/01/01"; 
       var splitClndr = inputDate.value.split("/"); 
       var clndrDate = new Date(splitClndr[0], splitClndr[1], splitClndr[2]); 
       clndrDate.setDate(clndrDate.getDate() - 1); 
       var nd = new Date(clndrDate); 
       var dd = nd.getDate(); 
       var mm = nd.getMonth(); 
       var y = nd.getFullYear(); 
       var newFormattedDate = y + '/'+ mm + '/'+ dd; 
       operatorDate.value = newFormattedDate; 

Значение я получаю в переменной newFromattedDate является 2017/0/31, как я могу сделать результат вычитания дня 2016/12/31 вместо этого?

+0

месяц основан на нулевом значении ... добавьте его в 'nd.getMOnth()' - вам также потребуется вычесть его из 'splitClndr [1]' –

ответ

1

месяцев в JavaScript с нулем, так 0 январь:

new Date(2017, 1, 1) >> Wed Feb 01 2017 

Вы должны компенсировать это, как при создании clndrDate и когда конкатенации вашей строки.

new Date(splitClndr[0], splitClndr[1]-1, splitClndr[2]) 

... 

var mm = nd.getMonth()+1; 
+0

. Ваше решение отлично работает, спасибо – Gintoki

0

Вы можете просто вычитать непосредственно с даты:

var d = new Date('2017/01/01'); 
d.setDate(d.getDate() - 1); 
var newDateString = d.toLocaleDateString(); 
console.log(newDateString); 
0

Вы можете использовать метод setDate вычесть количество дней вы хотите.

var inputDate = "2017/01/01"; 
var newDate = new Date(inputDate); 
newDate.setDate(newDate.getDate() - 1); 
console.log(newDate); 
0

Попробуйте это,

var inputDate = "2017/01/01"; 
    var splitClndr = inputDate.split("/"); 
    var clndrDate = new Date(splitClndr[0], splitClndr[1] - 1, splitClndr[2]); 
    var past_time = clndrDate.getTime() - 1000 * 60 * 60 * 24 * 1; // last 1 will be day 
    clndrDate.setTime(past_time); 
    console.log(clndrDate); 

Рабочая jsfilddle.

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