// Ф-ция вычисления разности времени // flag = true - полное с датой и временем, false (можно не ставить этот параметр) только время let calculateTime = (firstDate, secondDate, flag) => { if (flag) { if ( firstDate.slice(11,-3) == secondDate.slice(11,-3) ) { if (firstDate.slice(11,2) == secondDate.slice(11,2) ) { return 0; } } firstDate = firstDate.slice(11,-3); secondDate = secondDate.slice(11,-3); } 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); } if (minuts == 60) { hours = hours - 1; } return Number((hours * 60) + minuts); }; calculateTime('13:14', '15:18');
Мне кажется как то замудрено , чтобы просто сверить часы
на счёт флага - ненужная и хреновая идея
а через методы Date не пробовал? setTime, setMinutes и потом сравнить миллисекунды
потому что с ходу не очень понятно, что он делает, странно называется и всю эту кашу лучше вынести в отдельную функцию. каждая функция должна делать что-то одно, не надо этажи всего подряд в неё упаковывать. с таким же успехом туда можно ещё штук десять флагов впихать, на приготовление кофе, выполнение блоуджоб и прочего
function calculateTime2(time1, time2) { const [hh1, mm1] = time1.split(':'); const [hh2, mm2] = time2.split(':'); const date1 = new Date(2022, 01, 01, hh1, mm1 ).getTime(); const date2 = new Date(2022, 01, 01, hh2, mm2 ).getTime(); const diff = date2-date1; return diff/60000; }
Ну и как это понимать? function calculateTime2(time1, time2) { const [hh1, mm1] = time1.split(':'); const [hh2, mm2] = time2.split(':'); const date1 = new Date(2022, 01, 01, hh1, mm1 ).getTime(); const date2 = new Date(2022, 01, 01, hh2, mm2 ).getTime(); const diff = date2-date1; return diff/60000; } calculateTime2('23:58', '01:18'); // -1360 ?
Ну так, 23:58 больше 01:18 на 1360 минут или 22,6 часа.
Где там указано, что 01:18 это следующие сутки?
Про минус, это, конечно, не правильно, извиняюсь, но повторюсь, чем больше вариантов, тем лучше... (чисто субъективно)
Время так и сравнивается.
function calculateTime2(time1, time2) { const [hh1, mm1] = time1.split(':'); const [hh2, mm2] = time2.split(':'); const date1 = new Date(2022, 01, 01, hh1, mm1 ).getTime(); let date2 = new Date(2022, 01, 01, hh2, mm2 ).getTime(); let diff = date2-date1; if ( diff < 0 ) { date2 = new Date(2022, 01, 02, hh2, mm2 ).getTime(); diff = date2-date1; } return diff/60000; } Держи без минуса
Обсуждают сегодня