【发布时间】:2021-10-12 19:05:48
【问题描述】:
我正在尝试使用 hr/min/sec 格式计算开始和结束之间的时间差。我下面的函数的问题是我的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(...)- trim 不是一个函数,除非你创建它 -
您需要一个函数将
"hh:mm:ss"转换为秒...const stringToSeconds=s => s.split(':').map(Number).reduce((a,b)=>a*60+b);会做到这一点 -
另外,除非绝对必要,否则不要使用全局变量...即
$s、$e、$a、$h、$m- 如果您想要可读性更好,请更好地命名这些变量代码
标签: javascript function return trim floor