Вот мое 2 свидание

var startdate = '11-12-2016';
var stopdate = '13-12-2016';

Я хочу провести цикл между этими двумя датами. Итак, я сделал это

var startMedicine = new Date(startdate);
var stopMedicine = new Date(stopdate);
while(startMedicine <= stopMedicine){
  console.log(startdate)
}

Но я получаю неограниченное количество циклов в браузере.

Как я могу это сделать.

Примечание.

Я не хочу использовать jQuery для этого.

Если начальная и конечная даты одинаковы, то цикл должен выполняться только один раз, а входная дата всегда будет в формате d / m / y. В чем ошибка в моем коде. Пожалуйста помогите

Обновление:

Я ошибся в формате даты, мой формат даты d-m-y. Как я могу сделать это для одного ..

0
user3432407 11 Дек 2016 в 11:58

3 ответа

Лучший ответ

Дата увеличения на один день за итерацию с использованием getDate

startdateArr = startdate.split('-');
stopdateArr = stopdate.split('-');

var startMedicine = new Date(startdateArr[2],startdateArr[1]-1,startdateArr[0]);

var stopMedicine = new Date(stopdateArr[2],stopdateArr[1]-1,stopdateArr[0]);
// thanks RobG for correcting on month index
while(startMedicine <= stopMedicine){
  var v  = startMedicine.getDate() + '-' + (startMedicine.getMonth() + 1) + '-' +   startMedicine.getFullYear();
  console.log(v);
  startMedicine.setDate(startMedicine.getDate()+1);
}

В js месяце индексация начинается с 0, поэтому ноябрь - 10 дек. 11 и так вот почему я использую getMonth() + 1 `

1
Viney 11 Дек 2016 в 13:40

Основная проблема в том, что вы не увеличиваете дату.

Вот решение

var startdate = '11/12/2016';
var stopdate  = '11/13/2016';

var startMedicine = new Date(startdate);
var stopMedicine = new Date(stopdate);

var currentMedicine = startMedicine;
var dayCount = 0;

while(currentMedicine < stopMedicine){
  currentMedicine.setDate(startMedicine.getDate() + dayCount);

  // You can replace '/' to '-' this if you want to have dd-mm-yyyy instead of dd/mm/yyy
  var currentDate = currentMedicine.getDate() + '/' + (currentMedicine.getMonth() + 1) + '/' +  currentMedicine.getFullYear(); // in dd/mm/yyyy format

  console.log(currentDate);

  dayCount++;
}
0
Abdullah Mallik 11 Дек 2016 в 09:31

Вы можете использовать момент js и продолжительность js. Это только для целей. Это очень легко и предназначено для того же.

0
Anoop Butola 11 Дек 2016 в 10:04