<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.ost{
font-size: 33px;
}
</style>
</head>
<body>
<div class="ost"></div>
<script>
var date = new Date(2027,03,21);
setInterval(()=>{
var now = new Date(),
s = 59 - now.getSeconds(),
m = 59 - now.getMinutes(),
h = 23 - now.getHours(),
ost = date.valueOf() - now.valueOf();
d = parseInt(ost/1000/60/60/24);
document.querySelector('.ost').textContent = `Осталось: ${d} дн ${h} час ${m} мин ${s} сек`;
},1000);
</script>
</body>
</html>
вывод с годами и месяцами оказался немного более геморный чем я думал