I'm using Node.js and Moment in order to retrieve the days until the next 8th:
const getDaysTillSalary = (day) => {
const today = moment();
const currentDay = moment().format('D');
let currentMonth = moment().format('M');
let currentYear = moment().format('Y');
const isCurrentDayGreater = parseInt(currentDay) > day;
currentYear = isCurrentDayGreater && parseInt(currentMonth) === 12 ? moment().add(1, 'year').format('Y') : currentYear;
currentMonth = isCurrentDayGreater ? moment().add(1, 'months').format('M') : currentMonth;
const salaryDate = moment(`${day}-${currentMonth}-${currentYear}`, 'DD-MM-YYYY');
return salaryDate.diff(today, 'days');
}
getDaysTillSalary(8);
I'm sure there is a cleaner and maybe efficient way to solve this problem, and will be glad to get some feedback.