Мне нужно перебрать массив из двух значений, чтобы на выходе получить все значения между ними.
Например: ['10-07-2018', '18-07-2018'] = > ['11-07-2018', '12-07-2018', '13-07-2018', '14-07-2018', '15-07-2018', '16-07-2018', '17-07-2018']
Каким методом так можно сделать? + мне нужно будет проверять когда закончится месяц, чтобы переходить на следующий.
$(document).ready(function () {
var arr = ['10-07-2018', '18-07-2018'];
console.log(arr);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
В javascript с таким форматом работать не получиться:
"DD-MM-YYYY" формат вернет undefined. Некоторые браузеры будут пытаться прочитать данный формат, но некоторые просто вернут NaN
Используйте международный формат, универсальное решение:
const getDates = function(startDate, endDate) {
var dates = [],
currentDate = startDate,
addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
};
while (currentDate <= endDate) {
currentDate = `${currentDate.getMonth() +
1}-${currentDate.getDate()}-${currentDate.getFullYear()}`;
dates.push(currentDate);
currentDate = addDays.call(currentDate, 1);
}
return dates;
};
let datesArray = ["2018-07-10", "2018-07-18"];
datesArray = [...getDates(new Date(datesArray[0]), new Date(datesArray[1]))];
console.log(datesArray);
В любом случае вы потом можете элементы массива после того, как его получили, перевести в любой другой формат.
const getDates = function(startDate, endDate) {
var dates = [],
currentDate = startDate,
addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
};
while (currentDate <= endDate) {
let formatedDate = `${('0' + currentDate.getDate()).slice(-2)}-${('0' + (currentDate.getMonth()+1)).slice(-2)}-${currentDate.getFullYear()}`;
dates.push(formatedDate);
currentDate = addDays.call(currentDate, 1);
}
return dates;
};
let dateArray = ["07-07-2018", "11-07-2018"];
dateArray = [
...getDates(
new Date(dateArray[0].replace(/(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3")),
new Date(dateArray[1].replace(/(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3"))
)
];
console.log(dateArray);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости