#javascript #datetime
Добрый день, мне приходят данные в string формате: '11:43' и '13:14' Помогите правильно написать скрипт что-бы высчитывал разницу между этими двумя числами, должно получиться 01:31. Можно через Moment JS
Ответы
Ответ 1
Возможно вам будет достаточно такого решения: let firstDate = '11:43'; let secondDate = '13:14'; let getDate = (string) => new Date(0, 0,0, string.split(':')[0], string.split(':')[1]); //получение даты из строки (подставляются часы и минуты let different = (getDate(secondDate) - getDate(firstDate)); let hours = Math.floor((different % 86400000) / 3600000); let minutes = Math.round(((different % 86400000) % 3600000) / 60000); let result = hours + ':' + minutes; console.log(result);Ответ 2
Можно поступить так: распарсить отдельно первое и второе значение string на часы и минуты часы умножить на 60 и сложить с минутами и получится одно число в минутах должно получиться 11*60+43=703 и 13*60+14=794 вычесть из первых минут вторые и ответ взять по модулю получится |703-794|=91 дальше просто ответ делим на 60 и получаем количество часов, т.е. 1 и в конце вычитаем из ответа количество часов *60, т.е. 91-60*1=31 и получаем минуты Итого 1 час 31 минутаОтвет 3
Немного дописал скрипт, если время началось в 23:43 и закончилось в 04:14 выдаст правильный ответ. let firstDate = '23:43'; let secondDate = '04:14'; let getDate = (string) => new Date(0, 0,0, string.split(':')[0], string.split(':')[1]); let different = (getDate(secondDate) - getDate(firstDate)); let differentRes, hours, minuts; if(different > 0) { differentRes = different; hours = Math.floor((differentRes % 86400000) / 3600000); minuts = Math.round(((differentRes % 86400000) % 3600000) / 60000); } else { differentRes = Math.abs((getDate(firstDate) - getDate(secondDate))); hours = Math.floor(24 - (differentRes % 86400000) / 3600000); minuts = Math.round(60 - ((differentRes % 86400000) % 3600000) / 60000); } let result = hours + ':' + minuts; console.log(result)
Комментариев нет:
Отправить комментарий