Я пытаюсь рассчитать разницу во времени между началом и концом в формате час/мин/сек. Моя проблема с моей функцией ниже заключается в том, что мой console.log
не возвращает никакого значения. Надеюсь на помощь в этом.
var mf_start = "10:30:30";
var mf_end = "11:10:10";
function time_interval(mf_start,mf_end)
{
$s = mf_start;
$e = mf_end;
if ($s < $e)
{
$a = $e - $s;
}
else
{
$e = '+1 day',$e;
$a = $e - $s;
}
$h = Math.floor($a/3600);
$m = Math.floor(($a%3600)/60);
$s = $a%60;
var str = ($h?$h+' hour ':'')+($m?$m+' minute ':'')+($s?$s + ' second ':'');
return str.trim();
}
var c = time_interval(mf_start,mf_end);
console.log(c);
Скриншот консоли, он пустой: (основная проблема)
Что я пробовал:
Я получаю непредвиденную ошибку строки в моем триммере, если я делаю такой код, как
return trim(($h?$h.' hour ':'').($m?$m.' minute ':'').($s?$s.' second ':''));
поэтому я сначала разделил его с помощью переменной, а затем вернул с обрезкой.
Ожидаемый результат (на основе заданных значений):
39 minute 40 second
"11:10:10" - "10:30:30"
===NaN
строки вычитать нельзя...return trim(...)
- обрезка не является функцией, если ее не создатьвам понадобится функция для преобразования
"hh:mm:ss"
в секунды ...const stringToSeconds=s => s.split(':').map(Number).reduce((a,b)=>a*60+b);
сделает этоКроме того, прекратите использовать глобальные переменные без крайней необходимости... т.е.
$s
,$e
,$a
,$h
,$m
- и назовите эти переменные лучше, если вы хотите читаемый код