Ваш код имеет ряд проблем:
function()
{
Синтаксическая ошибка, объявления функций требуют имя функции.
datearry = ("i"+"p2"+"p3");
datearray инициализирован как массив, но здесь назначается строковый литерал (буквально "ip2p3"). Вы, вероятно, имели в виду:
datearray.push(String(i) + p3 + p3);
, который добавит строку, подобную «26042020» в первый раз, однако, по мере того, как алгоритм прогрессирует, а строки превращаются в числа, вы начнете получать значения, подобные «152020» на 1 марта 2020 года. Таким образом, вам понадобятся некоторые отступы и, возможно, разделитель, чтобы получить «01-05-2020» и соответствовать формату ввода.
Наконец, код, по-видимому, некорректно приспосабливает переходы через Границы месяца и года. Исправление, которое действительно бесполезно, так как это намного сложнее, чем нужно, или я готов беспокоиться, поскольку есть гораздо более простые альтернативы. : -)
Если вы ищете массив временных меток между двумя датами, одна из стратегий состоит в том, чтобы преобразовать временные метки в даты, тогда l oop в требуемом диапазоне, сохраняя требуемые выходные метки времени в массиве. .
Существующие вопросы касаются того, как анализировать строку даты и , как форматировать дату . Вы можете собрать их вместе, чтобы создать что-то вроде следующего:
// startDate, endDate in format dd-mm-yyyy
// Return array of dates inclusive of start and end in same format
function getDateRange(startDate, endDate) {
// Parse dd-mm-yyyy
let qParse = s => {
let [d, m, y] = s.split(/\D/);
return new Date(y, m-1, d);
};
// Format date as dd-mm-yyyy
let qFormat = d => {
let z = n => (n<10? '0' : '') + n;
return z(d.getDate())+'-'+z(d.getMonth()+1)+'-'+d.getFullYear();
}
// Setup for loop
let start = qParse(startDate);
let end = qParse(endDate);
let result = [];
// Loop from start to end, incrementing
// the start date and writing to result array
do {
result.push(qFormat(start));
start.setDate(start.getDate() + 1);
} while (start <= end)
return result;
}
console.log(getDateRange('26-02-2020','03-03-2020'));
// Different delimiters in input
console.log(getDateRange('28.12.2020','03/01/2021'));
Вы также должны подтвердить ввод. Функции parse и format закрыты в функции, так как они предназначены только для работы с указанным c форматом OP (то есть они не являются общими функциями синтаксического анализа или форматирования).