Как правильно построить логику работы с датой?
У меня есть дата заказа, которая приходит с сервера. Необходимо создать счетчик обработки заказа, который будет тикать каждую секунду, и если регламент закончился, то писать, что регламент вышел.
<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,
а не проще присылать с сервера reglamentStatic а не дату, и тогда 90% вычислений можно в топку + не надо отслеживать разницу времени сервера и клиента. |
Часовой пояс GMT +3, время: 06:41. |