Показать сообщение отдельно
  #1 (permalink)  
Старый 03.04.2020, 11:23
Интересующийся
Отправить личное сообщение для Martovytskyi Посмотреть профиль Найти все сообщения от Martovytskyi
 
Регистрация: 13.06.2016
Сообщений: 15

Как правильно построить логику работы с датой?
У меня есть дата заказа, которая приходит с сервера. Необходимо создать счетчик обработки заказа, который будет тикать каждую секунду, и если регламент закончился, то писать, что регламент вышел.

<div class="reglament"></div>


let dateNow = new Date();
      // вывожу в удобном формате, т.к. потом используется при обработке заказа
      Number.prototype.padLeft = function(base, chr) {
          let len = (String(base || 10).length - String(this).length) + 1;
          return len > 0 ? new Array(len).join(chr || '0') + this : this;
      };
      let dateNew = [
          dateNow.getFullYear(), (dateNow.getMonth() + 1).padLeft(),
          dateNow.getDate().padLeft(),
      ].join('-') + ' ' + [
          dateNow.getHours().padLeft(),
          dateNow.getMinutes().padLeft(),
          dateNow.getSeconds().padLeft()
      ].join(':');
      let dateStart = "2020-04-03";
      let timeStart = "11:00:02";
      let resStartDate = dateStart + ' ' + timeStart;
      // получаем в миллисекундах
      resStartDate = Date.parse(resStartDate);
      dateNew = Date.parse(dateNew);
      // получаю разницу
      let difference = dateNew - resStartDate;
      let getSeconds = difference / 1000;
      let getMinutes = difference / 60000;
      console.log(getSeconds);
      // регламент в минутах
      let reglamentStatic = Number('150');
      let resReglament = reglamentStatic - getMinutes;
      if (resReglament < 0) {
          $('.reglament').text('регламент закончился');
      } else {
      	$('.reglament').text(getSeconds);
      }


ссылка на jsfiddle

Застопорился на преобразовании секунд в счетчик.
Ответить с цитированием