function toISODate(milliseconds) {
var date = new Date(milliseconds)
var stap = 24 // Прибавляем к дате число смены пасспорта, допустим в 45 лет
var y = date.getFullYear() + stap
var m = date.getMonth() + 1
var d = date.getDate()
m = m < 10 ? '0' + m : m
d = d < 10 ? '0' + d : d
return [y, m, d].join('-')
}
var date1 = new Date()
var date2 = new Date(2001, 11, 30)
var timeSec = Math.abs(date1.getTime() - date2.getTime()) // Выясняем сколько лет парню
var timeSec2 = Math.abs(date2.getTime() + timeSec) // Прибавляем к его возрасту современную дату для вычисления сколько ему лет на сегодня
let divDate = document.createElement('div')
divDate.innerHTML = `Ближайшая смена пасспорта : ${toISODate((milliseconds = timeSec2))}`
document.body.appendChild(divDate)
Это бред конечно ещё тот, но может натолкнуть вас на какую либо мыслю, вообще лучше делать это на php в плане легче.