function cloneOrCreateDate(date) {
return date instanceof Date ? new Date(date) : new Date();
}
function getMidnightDate(date) {
const d = cloneOrCreateDate(date);
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);
return d;
}
function addDaysToDate(days, date) {
const d = cloneOrCreateDate(date);
d.setDate(d.getDate() + days);
return d;
}
function timeOffset(d1, d2) {
return Math.abs(d1 - d2);
}
setTimeout(() => {
// логика в полночь
}, timeOffset(Date.now(), addDaysToDate(1, getMidnightDate())));