Таймер обратного отсчета до дня рождения

С таймером проблем не возникло, написан - работает. Проблема заключается в следующем. Человек при регистрации указывает дату рождения, в аргумент функции инициализирующей таймер передается дата-дедлайн, в которую таймер сбрасывается и начинает новый круг отсчета.

Второй день ломаю голову над решением этой проблемы: как вычислить число миллисекунд, которое соответствует дню и месяцу рождения пользователя, но + 1 год от текущего.

Пример: пользователь родился 01.01.1970, необходимо передавать в аргумент функции числовое представление даты 01.01.2021, и естественно год должен быть вычислен не вручную, а динамически. Условно - currentYear + 1.

Спасибо


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

Автор решения: Aziz Umarov

Думаю такая примерная арифметика

let birthDate = new Date("1970-01-24");
let month = birthDate.getMonth();
var day = birthDate.getDate();

let nextBirthDate = new Date(new Date().getFullYear() + 1, month, day);
let diff = nextBirthDate - new Date();

console.log(diff);

console.log(new Date(diff).getUTCFullYear() - 1970); // Gives difference as year
// 3

console.log(new Date(diff).getUTCMonth()); // Gives month count of difference
// 6

console.log(new Date(diff).getUTCDate() - 1); // Gives day count of difference
// 4

→ Ссылка