Таймер в 2 знака

Есть таймер на JS. Отсчитывает время, всё хорошо. Но тогда, когда часы, минуты и секунды достигают момента, когда число меньше 10, то время отображается по одной цифре ( Пример: 4 минуты ). Выглядит не очень. Хотел сделать, чтобы при числе меньше 10 прибавлялся 0 перед символом ( Чтобы было: 04 минуты. ). Требуется помощь. Вот, пытался сделать сам

let timer_show = document.getElementById("timer");

function diffSubtract(date1, date2) {
  return date2 - date1;
}

let end_date = {
  "full_year": "2021",
  "month": "09",
  "day": "29",
  "hours": "00",
  "minutes": "00",
  "seconds": "00"
}

let end_date_str = `${end_date.full_year}-${end_date.month}-${end_date.day}T${end_date.hours}:${end_date.minutes}:${end_date.seconds}`;

timer = setInterval(function () {
  let now = new Date();
  let date = new Date(end_date_str);
  let ms_left = diffSubtract(now, date);
  if (ms_left <= 0) {
    clearInterval(timer);
    timer_show.innerHTML = `0  :  0  :  0  :  0`;
  } else {
    let res = new Date(ms_left);
    // далее мои попытки реализовать добавление ноля
    if (res.getUTCSeconds < '10') res.getUTCSeconds = '0' + res.getUTCSeconds;
    if (res.getUTCMinutes < '10') res.getUTCMinutes = '0' + res.getUTCMinutes;
    // конец попыткам
    let str_timer = `<span class="t_date">${res.getUTCDate() - 1}</span> :  <span class="t_hour">${res.getUTCHours()}</span>  :  <span class="t_min">${res.getUTCMinutes()}</span>  :  <span class="t_sec">${res.getUTCSeconds()}</span>`;
    timer_show.innerHTML = str_timer;
  }
}, 1000)
    <div class="timer">
      <div id="timer"></div>
    </div>


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

Автор решения: HTO HOT

Дело в том res.getUTCSeconds это функция и вы пытаетесь к этой функции присвоить строку. Не надо так делать)

Вот исправил ваш код надеюсь вы дружите с тернарным оператором(можно и без него обойтись если знаете как).

В начале кода моя функция timeNormalize

let timer_show = document.getElementById("timer");

function diffSubtract(date1, date2) {
  return date2 - date1;
}

////моя функция
function timeNormalize(time){
    return (time<10)?'0'+time:`${time}`
}

let end_date = {
  "full_year": "2021",
  "month": "10",
  "day": "01",
  "hours": "00",
  "minutes": "00",
  "seconds": "00"
}

let end_date_str = `${end_date.full_year}-${end_date.month}-${end_date.day}T${end_date.hours}:${end_date.minutes}:${end_date.seconds}`;

timer = setInterval(function () {
  let now = new Date();
  let date = new Date(end_date_str);
  let ms_left = diffSubtract(now, date);
  if (ms_left <= 0) {
    clearInterval(timer);
    timer_show.innerHTML = `0  :  0  :  0  :  0`;
  } else {
    let res = new Date(ms_left);
    /////мой код
    const strDate       = timeNormalize(res.getUTCDate()-1)////ваш минус снизу претащил сюда
    const strHours      = timeNormalize(res.getUTCHours())
    const strMinutes    = timeNormalize(res.getUTCMinutes())
    const strSeconds    = timeNormalize(res.getUTCSeconds())
    // конец моего кода
    let str_timer = `<span class="t_date">${strDate}</span> :  <span class="t_hour">${strHours}</span>  :  <span class="t_min">${strMinutes}</span>  :  <span class="t_sec">${strSeconds}</span>`;
    timer_show.innerHTML = str_timer;
  }
}, 1000)
<div class="timer">
        <div id="timer"></div>
    </div>

→ Ссылка