Неправильно прибавляются даты
Как-то помогли мне здесь сделать функцию, в которой есть функция получения дат одного дня недели в течении месяца от заданной даты. Если заданная дата последний, например, вторник месяца, то еще и даты всех вторников следующего месяца.
Вот функция формирования массива дат. 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, время: 16:33. |