Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как правильно построить логику работы с датой? (https://javascript.ru/forum/misc/79870-kak-pravilno-postroit-logiku-raboty-s-datojj.html)

Martovytskyi 03.04.2020 11:23

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

<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

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

Martovytskyi 03.04.2020 11:42

вопрос решен, может кому то пригодится ответ

рони 03.04.2020 11:47

Martovytskyi,
а не проще присылать с сервера reglamentStatic а не дату, и тогда 90% вычислений можно в топку + не надо отслеживать разницу времени сервера и клиента.


Часовой пояс GMT +3, время: 06:41.