js怎么计算两个时间相差的小时数

hmx681130 2017-08-25 09:46:19
两个时间日期可能不同,自己算hh:mm:ss格式相差的小时数,应该怎么计算呢
...全文
5583 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jac-song 2017-08-25
  • 打赏
  • 举报
回复
请接终极大招,强大的日期函数库,年月日时分秒任意换算
Go 旅城通票 2017-08-25
  • 打赏
  • 举报
回复

    function getHour(s1, s2) {
        var reDate = /\d{4}-\d{1,2}-\d{1,2} /;
        s1 = new Date((reDate.test(s1) ? s1 : '2017-1-1 ' + s1).replace(/-/g, '/'));
        s2 = new Date((reDate.test(s2) ? s2 : '2017-1-1 ' + s2).replace(/-/g, '/'));
        var ms = s2.getTime() - s1.getTime();
        if (ms < 0) return 0;
        return Math.floor(ms / 1000 / 60 / 60);
    }
    //自己注意传递要么都带日期,要么都不带,否则计算出来的不对
    alert(getHour('2017-8-23 12:05:05', '2017-8-25 10:05:05'))
    alert(getHour('12:05:05', '10:05:05'))
    alert(getHour('10:05:05', '12:05:05'))
hmx681130 2017-08-25
  • 打赏
  • 举报
回复
编辑不了,题目有错别字,是只计算. ps... 不管日期,比如一个是 15:35:26 ,一个是19:24:57,相差是3.8h;如果一个是 15:35:26 ,一个是10:14:57,第二个比第一个小,直接返回空. 或者怎么通过时间毫秒数把日期的毫秒数去掉,那么后面就好算了
hmx681130 2017-08-25
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:
Date类型的话直接互相减一下就可以算出毫秒差 自己把毫秒换算成时分秒
不是的,只计算时间的差值,不计算日期的差值,比如一个是2017-08-08 13:00:00,一个是2017-08-08 14:00:00,那么相差1, 一个是2017-08-08 13:00:00,一个是2017-08-08 11:00:00直接返回空.
Go 旅城通票 2017-08-25
  • 打赏
  • 举报
回复

    function getHour(s1,s2) {
        s1 = new Date(s1.replace(/-/g, '/'));
        s2 = new Date(s2.replace(/-/g, '/'));
        var ms = Math.abs(s1.getTime() - s2.getTime());
        return ms / 1000 / 60 / 60;
    }
   alert( getHour('2017-8-23 12:05:05', '2017-8-25 10:05:05'))


Web开发学习资料推荐
asp json类库解析json字符串
javascript函数属性caller和arguments callee介绍
___紫菜 2017-08-25
  • 打赏
  • 举报
回复
 function DateDiff(sDate1, sDate2) {    
            var aDate, oDate1, oDate2, iDays
            aDate = sDate1.split(":")
            oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])    
            aDate = sDate2.split(":")
            oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0])
            iHour = parseInt(Math.abs(oDate1 - oDate2) / 1000 / 60 / 60)    
            return iHour
        }
似梦飞花 2017-08-25
  • 打赏
  • 举报
回复
Date类型的话直接互相减一下就可以算出毫秒差 自己把毫秒换算成时分秒
hmx681130 2017-08-25
  • 打赏
  • 举报
回复

            var now=(new Date().getTime()/3600000+8)%24;
想到了一个写法,计算日期的小时数,得到的就是去掉日期之后的时间,然后可以直接加减了
hmx681130 2017-08-25
  • 打赏
  • 举报
回复
引用 6 楼 showbo 的回复:

    function getHour(s1, s2) {
        var reDate = /\d{4}-\d{1,2}-\d{1,2} /;
        s1 = new Date((reDate.test(s1) ? s1 : '2017-1-1 ' + s1).replace(/-/g, '/'));
        s2 = new Date((reDate.test(s2) ? s2 : '2017-1-1 ' + s2).replace(/-/g, '/'));
        var ms = s2.getTime() - s1.getTime();
        if (ms < 0) return 0;
        return Math.floor(ms / 1000 / 60 / 60);
    }
    //自己注意传递要么都带日期,要么都不带,否则计算出来的不对
    alert(getHour('2017-8-23 12:05:05', '2017-8-25 10:05:05'))
    alert(getHour('12:05:05', '10:05:05'))
    alert(getHour('10:05:05', '12:05:05'))
这个好,的确可以

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧