Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 减去时间并以分:秒格式显示差异_Javascript - Fatal编程技术网

Javascript 减去时间并以分:秒格式显示差异

Javascript 减去时间并以分:秒格式显示差异,javascript,Javascript,我想准确地显示两次之间的差异。应以mm:ss等格式显示不同的文件 methods: { calcuateTimeDifference: function (startTime, endTime) { let result = 0; if (startTime && endTime) { let start = startTime.split(":");

我想准确地显示两次之间的差异。应以mm:ss等格式显示不同的文件

    methods: {
        calcuateTimeDifference: function (startTime, endTime) {
            let result = 0;
            if (startTime && endTime) {
                let start = startTime.split(":");
                let end = endTime.split(':');
                let startTimeInHrs = (parseFloat(start[0]/3600) + parseFloat(start[1]/60) + parseFloat(start[2]/3600));
                let endTimeInHrs = (parseFloat(end[0]/3600) + parseFloat(end[1]/60) + parseFloat(end[2] /3600));
                result = endTimeInHrs - startTimeInHrs;
            }
            return result.toFixed(2);

        },
使用此函数-以下时间之间的差异:16:03:01-16:04:01-我得到的结果为-32.00。

  • 拆分
    上的字符串:
    以获取小时、分钟和秒
  • 将全部转换为秒,并将它们相加,以获得每次的总秒数
  • 减去这两个以秒为单位的差值
  • 使用模块运算符(
    %
    )将差秒转换为小时、分钟和秒
  • 格式化结果以进行适当的显示
  • let start=“16:03:01”;
    让end=“16:04:05”;
    让时间=计算时间差(开始、结束);
    console.log(时间);
    函数计算时差(开始时间、结束时间){
    设结果=0;
    如果(开始时间和结束时间){
    const start=startTime.split(“:”).map(编号);
    const end=endTime.split(“:”).map(编号);
    常量开始秒=(60*60)*开始[0]+60*开始[1]+开始[2];
    常量结束秒=(60*60)*结束[0]+60*结束[1]+结束[2];
    const diffSeconds=endSeconds-startSeconds;
    秒=parseInt((diffSeconds)%60);
    分钟=parseInt((diffSeconds/60)%60);
    小时=parseInt((diffSeconds/(60*60))%24);
    //如果是单个数字,则在前面追加“0”
    小时数=(小时数<10)?“0”+小时数:小时数;
    分钟=(分钟<10)?“0”+分钟:分钟;
    秒=(秒<10)?“0”+秒:秒;
    返回`${hours}:${minutes}:${seconds}`;
    } 
    console.log(“无效输入”);
    
    }
    为什么要将小时数除以3600?您需要乘以3600以获得秒数。分钟也一样,用乘法代替除法。然后你也会因为某种原因把秒除以3600。别管它了。修复了这个问题,但仍然无法获得以下格式的时间mm:ssWell你没有代码尝试这样做。。。
    function calcuateTimeDifference(startTime, endTime) {
        let toSeconds = (time) => {
            let [h, m, s] = time.split(':');
            return h * 360 + m * 60 + +s;
        };
    
        let d = Math.abs(toSeconds(startTime) - toSeconds(endTime));
    
        let mm = String(Math.floor(d / 60));
        if (mm.length == 1) mm = '0' + mm;
    
        let ss = String(d % 60);
        if (ss.length == 1) ss = '0' + ss;
    
        return `${mm}:${ss}`;
    }