js计算时间差,两个时间的,或者是某个时间距离现在时间

、、计算现在的时间。年月日时分秒

    getNowFormatDate(type) {
        var date = new Date();
        var seperator1 = "-";
        
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var hour = date.getHours();
        var minutes = date.getMinutes() ;
        var seconds = date.getSeconds();
        var strDate = date.getDate();
        if (month >= 1 && month <= 9) {
            month = "0" + month;
        }
        if (strDate >= 0 && strDate <= 9) {
            strDate = "0" + strDate;
        }
        var currentdate = year + seperator1 + month + seperator1 + strDate+"  "+hour+":" +minutes+":" +seconds;
        
        return currentdate;
    },

//  计算时间差。两个时间之间的。


     intervalTime(startTime,endTime){
        var date1 = new Date(startTime);  //开始时间
        var date2 = new Date(endTime);    //结束时间
        var date3 = date2.getTime() - date1.getTime();  //时间差的毫秒数
        //计算出相差天数
        var days = Math.floor(date3 / (24 * 3600 * 1000));
        //计算出小时数

        var leave1 = date3 % (24 * 3600 * 1000);    //计算天数后剩余的毫秒数
        var hours = Math.floor(leave1 / (3600 * 1000));
        //计算相差分钟数
        var leave2 = leave1 % (3600 * 1000);        //计算小时数后剩余的毫秒数
        var minutes = Math.floor(leave2 / (60 * 1000));

        //计算相差秒数

        var leave3 = leave2 % (60 * 1000);      //计算分钟数后剩余的毫秒数
        var seconds = Math.round(leave3 / 1000);
         alert(" 用时: " + days + "天 " + hours + "小时 " + minutes + " 分钟" + seconds + " 秒")
  
      },

调用 intervalTime((2012,2,24,12,2,12),(2013,2,24,12,2,12))

2012,2,24,12,2,12代表的是2012年 2月24日 12时2分12秒

计算距离现在的时间的。你也可以把下面的dateEnd写成一个参数传过去的时间。这样就能算两个时间段的时间差了。

如果传的是2012-12-4 12:23:12这样的格式算时间,先把-都转化为/.然后再计算

 timeFn(d1) {//di作为一个变量传进来
    //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
    var dateBegin = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date
    var dateEnd = new Date();//获取当前时间
    var dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
    var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
    var leave1=dateDiff%(24*3600*1000)    //计算天数后剩余的毫秒数
    var hours=Math.floor(leave1/(3600*1000))//计算出小时数
    //计算相差分钟数
    var leave2=leave1%(3600*1000)    //计算小时数后剩余的毫秒数
    var minutes=Math.floor(leave2/(60*1000))//计算相差分钟数
    //计算相差秒数
    var leave3=leave2%(60*1000)      //计算分钟数后剩余的毫秒数
    var seconds=Math.round(leave3/1000)
    console.log(" 相差 "+dayDiff+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
    console.log(dateDiff+"时间差的毫秒数",dayDiff+"计算出相差天数",leave1+"计算天数后剩余的毫秒数"
        ,hours+"计算出小时数",minutes+"计算相差分钟数",seconds+"计算相差秒数");
},
 

调用 timeFn('2012-12-4 12:23:12').算是是这个时间距离现在的时间的时间差。

另一种场景:

//如果我们上次的计时还没有结束从新进入页面要根据上次的时间继续倒计时。

你可以根据两个时间相差的秒数来进行倒计时。用已知开始的时间和现在的时间算出相差的秒数。然后用https://blog.csdn.net/qq_33769914/article/details/80760680这个里面的方式,把这个秒数当做参数传过去赋值给time

首先根据已经的开始时间hasKnownTime

timeFn(hasKnownTime); 计算出seconds。然后在那个seconds获取后访问下面的函数

timer(seconds){
   var time = seconds;
  setInterval(function () {
        var minute = ~~(time / 60), second = time % 60;
        var getlabel = function (i) { return i < 10 ? '0' + i : i; }
           $('#answer-times').html(getlabel(minute) + ':' + getlabel(second));

注意这个里面不能用this。有时候在vue里面使用,可能下面的内容变了但是dom里面的元素没变,我们需要用上

      this.$set(要改变的那个值所属的数组,数组对应的下标,想要赋给他值)
         time += 1;

}

猜你喜欢

转载自blog.csdn.net/qq_33769914/article/details/83626932
今日推荐