count-up-down

View on GitHub Published at December 05, 2021, 12:57 GMT+0

`count-up-down` is a npm package that we can use to get the units required to construct a countdown or count-up timer, such as years, months, days, hours, minutes, and seconds. A demo can be seen here: https://imballinst.github.io/count-up-down. At the time of writing, it is a count down to 2022. After 2022 kicks in, then it will become a count-up.

This package is published in jsDelivr, so we can use it directly in a page, along with our stylings.

<div class="root">
  <div class="row">
    <div class="wrapper">
      <div class="value" id="years"></div>
      <div class="unit">years</div>
    </div>
    <div class="wrapper">
      <div class="value" id="months"></div>
      <div class="unit">months</div>
    </div>
    <div class="wrapper">
      <div class="value" id="days"></div>
      <div class="unit">days</div>
    </div>
  </div>
  <div class="row">
    <div class="wrapper">
      <div class="value" id="hours"></div>
      <div class="unit">hours</div>
    </div>
    <div class="wrapper">
      <div class="value" id="minutes"></div>
      <div class="unit">minutes</div>
    </div>
    <div class="wrapper">
      <div class="value" id="seconds"></div>
      <div class="unit">seconds</div>
    </div>
  </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/count-up-down@0.2.3/dist/count-up-down.min.js"></script>
<script>
  const ONE_HOUR_AGO = new Date(new Date().getTime() - 3600 * 1000);

  window.addEventListener('load', () => {
    // This will render to the divs with the ID "years", "months", and so on.
    renderToDivs(calculate(ONE_HOUR_AGO, new Date()).result);

    setInterval(() => {
      renderToDivs(calculate(ONE_HOUR_AGO, new Date()).result);
    }, 1000);
  });
</script>

It can also be installed as a dependency in our `package.json`, which we can use like the following:

import { calculate } from 'count-up-down';

const ONE_HOUR_AGO = new Date(new Date().getTime() - 3600 * 1000);

// {
//   result: { days: 0, hours: 1, minutes: 0, months: 0, seconds: 0, years: 0 },
//   type: 'countdown'
// }
console.log(calculate(new Date(), ONE_HOUR_AGO));