0
点赞
收藏
分享

微信扫一扫

JS获取,封装时间差

杰森wang 2022-04-14 阅读 97
javascript

获取时间差

思路:

1、准备两个时间对象

2、两个时间对象相减(可以,有兼容问题,IE低版本不好使)

==>得到:就是两个时间对象时间戳的差值

==>为了兼容,获取两个时间节点的时间戳,相减

==>相减以后去一个绝对值,不需要考虑谁大谁小

==>结果是ms,最好 /1000以后再取整

3、换算

==>换算天

=>diffTime / 一天的秒数,取整

==>换算小时

=>diffTime % 一天的秒数 / 一小时的秒数,取整

==>换算分钟

=>diffTime % 一小时的秒数 / 一分钟的秒数,取整

==>换算秒

=>diffTime % 一分钟的秒数,取整

    //1、准备两个时间对象
      var time1 = new Date();
      //月份是数字的时候,0表示一月,11表示12月
      var time2 = new Date(2022, 3, 15, 0, 0, 0);
      //2、使用时间戳相减
      var diffTime = Math.round(
        Math.abs(time1.getTime() - time2.getTime()) / 1000
      );
      console.log(diffTime);
      //3、换算
      //换算天
      var day = parseInt(diffTime / (60 * 60 * 24));
      console.log(day);
      //换算小时
      var hours = parseInt((diffTime % (60 * 60 * 24)) / (60 * 60));
      console.log(hours);
      //换算分
      var minutes = parseInt((diffTime % (60 * 60)) / 60);
      console.log(minutes);
      //换算秒
      var seconds = diffTime % 60;
      console.log(seconds);
      console.log(`还有${day}天${hours}小时${minutes}分钟${seconds}秒`);

 封装

        把计算时间差封装起来

       

        1、准备一个函数,接收两个时间对象

        2、在函数内部计算时间差

        3、返回结果

            =>返回一个什么数据类型

            1、字符串:返回什么,就只能用什么,不然要拆开

            ->缺点:使用不够灵活

            2、数组:数据足够灵活,指向性不够明确

            ->缺点:每一次使用都需要看一次源码

            3、对象:数据足够灵活,指向性足够明确

//1、准备函数
      function getTimeDifference(time1, time2) {
        //使用时间戳相减
        var diffTime = Math.round(
          Math.abs(time1.getTime() - time2.getTime()) / 1000
        );
        //换算天
        var day = parseInt(diffTime / (60 * 60 * 24));
        //换算小时
        var hours = parseInt((diffTime % (60 * 60 * 24)) / (60 * 60));
        //换算分
        var minutes = parseInt((diffTime % (60 * 60)) / 60);
        //换算秒
        var seconds = diffTime % 60;
        //1、使用字符串
        //0天1时23分9分 string
        // return `${day}天${hours}时${minutes}分${seconds}分`;
        //使用数组
        //(4) [0, 1, 21, 30]
        // return [day, hours, minutes, seconds];
        //使用对象
        // {day: 0, hours: 1, minutes: 20, seconds: 16}
        return {
          day: day,
          hours: hours,
          minutes: minutes,
          seconds: seconds,
        };
      }
      var time1 = new Date();
      //月份是数字的时候,0表示一月,11表示12月
      var time2 = new Date(2022, 3, 15, 0, 0, 0);
      var res = getTimeDifference(time1, time2);
      console.log(res);
/** 
 * 获取时间差
 *@param {TIME} time1 时间节点1 
 *@param {TIME} time2 时间节点2
 *@retrun {Object} 以对象形式返回时间差
 * 
*/
function getTimeDifference(time1, time2) {
    //使用时间戳相减
    var diffTime = Math.round(
      Math.abs(time1.getTime() - time2.getTime()) / 1000
    );
    //换算天
    var day = parseInt(diffTime / (60 * 60 * 24));
    //换算小时
    var hours = parseInt((diffTime % (60 * 60 * 24)) / (60 * 60));
    //换算分
    var minutes = parseInt((diffTime % (60 * 60)) / 60);
    //换算秒
    var seconds = diffTime % 60;
    return {
      day: day,
      hours: hours,
      minutes: minutes,
      seconds: seconds,
    };
  }

封装为utils.js文件

/** 
 * 获取时间差
 *@param {TIME} time1 时间节点1 
 *@param {TIME} time2 时间节点2
 *@retrun {Object} 以对象形式返回时间差
 * 
*/
function getTimeDifference(time1, time2) {
    //使用时间戳相减
    var diffTime = Math.round(
      Math.abs(time1.getTime() - time2.getTime()) / 1000
    );
    //换算天
    var day = parseInt(diffTime / (60 * 60 * 24));
    //换算小时
    var hours = parseInt((diffTime % (60 * 60 * 24)) / (60 * 60));
    //换算分
    var minutes = parseInt((diffTime % (60 * 60)) / 60);
    //换算秒
    var seconds = diffTime % 60;
    return {
      day: day,
      hours: hours,
      minutes: minutes,
      seconds: seconds,
    };
  }
举报

相关推荐

0 条评论