Javascript вывод предыдущего и следующего дня с учетом конца месяца

Почему предыдущий месяц выводит? Как исправить?

function time(date){
  
  let date18 = new Date(date)
  date18.setHours(18,0)

  const month = date => date.toLocaleString('default', { month: 'long' });
  
  const returnString = date => {
    
    let x = {}
    x.day = +date < +date18? date.getDate() : (date.setDate(date.getDate()+1), date.getDate())
    x.month = month(date)
    x.nextDay = (date.setDate(date.getDate()+1), date.getDate())
    x.monthX = month(date)
    
    return `${x.day + (x.month !== x.monthX? ' '+x.month : '')} и ${x.nextDay} ${x.monthX}, в 19:00`
    
  }

  return returnString(date)
  
}
function addZero(i) {
  if (i < 10) {i = "0" + i}
  return i;
}


let date = new Date();
let day = date.getDate();
let month = date.getMonth();

let year = date.getFullYear();
let hours = addZero(date.getHours());
let minutes = addZero(date.getMinutes());

Month = date.getMonth();

let new_date = new Date(year+'-'+month+'-'+day+' '+hours+':'+minutes);

let a = new Date('2021-12-30 17:00')
let b = new Date('2021-12-30 18:00')
let c = new Date('2021-11-14 11:00')
let d = new Date('2021-11-29 22:00')



console.log(time(new_date))
//console.log(time(c))
//console.log(time(d))


Ответы (1 шт):

Автор решения: Dmitry Lobanov
function getDate() {
  const now = new Date();
  const lastCallDate = new Date('2021-12-30T18:00');

  return now < lastCallDate ? '30 и 31 декабря, в 19:00' : '31 декабря и 1 января, в 19:00';
}
→ Ссылка