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

110 篇文章 0 订阅
20 篇文章 0 订阅

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

    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("'2016/03/28 10:17:22","2016/03/28 14:17:22")

如果,拿到的不是想要的日期类型,而是"2016-03-28 10:27:00"这种的格式,我们就需要转换一下。

var startTime = "2016-03-28 10:27:00";
var startTime1 = t1.replace(/\-/g, "/");

 

计算距离现在的时间的。你也可以把下面的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;

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值