Счетчик времени от указанной даты до текущей

<h3>Мы с Вами:</h3>
//нужно вывести данные в таком вот виде
<p>12 лет ___ 3 месяца ___ 5 дней ___ 21 час ___ 15 минут ___ 25 секунд</p>

Везде есть счетчики обратного отсчета только. Пока такой на JavaScript не нашел. Как такой написать?


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

Автор решения: Viking

Вам нужна библиотека moment.js

→ Ссылка
Автор решения: Mr. Man

Я бы сделал так:

const creationDateObj = {
  year: 2010,
  month: 2,
  day: 29,
  hours: 0,
  minutes: 0,
  seconds: 0
};

const creationDate = new Date(
  creationDateObj.year,
  creationDateObj.month,
  creationDateObj.day,
  creationDateObj.hours,
  creationDateObj.minutes,
  creationDateObj.seconds
);

const timeLeft = document.querySelector('#timeLeft');

setInterval(() => {

  const now = new Date();
  const diffInMS = now - creationDate;
  const diffAsDate = new Date(diffInMS);

  const [
    years,
    months,
    days,
    hours,
    minutes,
    seconds
  ] = diffAsDate
      .toISOString()
      .split('T')
      .map(timePart => 
        timePart
          .split(/-|:|\./)
          .map(str => +str)
      )
      .flat();

  timeLeft.textContent = `${years - 1970} лет ___ ${months - 1} месяца ___ ${days - 1} дней ___ ${hours} час ___ ${minutes} минут ___ ${seconds} секунд`;

}, 1000);
body {
  background-color: #777
}
<h3>Мы с Вами:</h3>
<p id="timeLeft"></p>

→ Ссылка