Неправильно прибавляются даты
Как-то помогли мне здесь сделать функцию, в которой есть функция получения дат одного дня недели в течении месяца от заданной даты. Если заданная дата последний, например, вторник месяца, то еще и даты всех вторников следующего месяца.
Вот функция формирования массива дат.
function getDates(date)
{ var arr = [];
date = new Date(date);
if(!date) return arr;
var days = 7;
date.setDate(date.getDate() + days);
var month = date.getMonth();
while (date.getMonth() == month) {
arr.push(dateFormat(date))
date.setDate(date.getDate() + days);
}
return arr;
}
Раньше вроде все было нормально, но сегодня грабли. Задаю 3 марта, в массив заносятся, 10, 17, 24 и 30. В упор не понимаю, должно же быть 31. Спасите от катаклизма |
Цитата:
<script>
let dateFormat = d => d.toLocaleDateString("ru");
function getDates(date)
{ var arr = [];
date = new Date(date);
if(!date) return arr;
var days = 7;
date.setDate(date.getDate() + days);
var month = date.getMonth();
while (date.getMonth() == month) {
arr.push(dateFormat(date))
date.setDate(date.getDate() + days);
}
return arr;
}
document.write(getDates(new Date(2020, 2, 3).getTime()))
</script>
|
Раньше работало, потом стали жаловаться, я проверил, так и есть. Отчего это может зависеть?
Причем на других датах работает. Не срабатывает на 2 и 3 марта. Для второго выдает 29 число, вместо 30, а для 3 - 30 вместо 31. Непонятка полная. |
Цитата:
|
Цитата:
|
savsoft,
где код который глючит? |
Цитата:
function dateFormat(date)
{
return date.toISOString().replace(/T.+$/, "")
}
|
savsoft,
попробуйте так
const dateFormat = date => {
const [d,m,y] = date.toLocaleDateString("ru").split(".");
return `${y}-${m}-${d}`
}
|
Цитата:
А почему нельзя использовать GetDate() + GetMonth + GetFullYear? |
Цитата:
|
| Часовой пояс GMT +3, время: 08:38. |