【问题标题】:How can I find the difference between two times [duplicate]我怎样才能找到两次之间的差异[重复]
【发布时间】:2018-05-27 14:21:45
【问题描述】:

如何在 JavaScript 中找到时间之间的差异?

这是我想出的伪代码

var firstTime = "20:24:00";
var secondTime = "20:00:52";
console.log(firstTime - secondTime);// 23:08 (23 minutes, 8 seconds)

【问题讨论】:

    标签: javascript jquery time


    【解决方案1】:

    您可以使用new Date().setHours() 从您拥有的时间中得出日期,然后减去它们,从差异中得出新的日期:

    var firstTime = "20:24:00";
    var secondTime = "20:00:52";
    
    //                                 transform variables into parameters
    let dateA = new Date().setHours(...(firstTime.split(":")));
    let dateB = new Date().setHours(...(secondTime.split(":")));
    
    let diff = new Date(dateA-dateB);
    
    console.log(`Differnce: ${diff.getUTCHours()}:${diff.getUTCMinutes()}:${diff.getUTCSeconds()}`);

    【讨论】:

      【解决方案2】:

      试试这个:

      var myDate1 = new Date();   
      myDate1.setHours(20, 24, 00, 0);
      var myDate2 = new Date();
      myDate2.setHours(20, 00, 52, 0);
      

      如果你直接减去它们,它会给你一个时间戳值。您可以通过以下方式转换此值:

      var result = myDate1 - myDate2; // returns timestamp
      var hours = new Date(result).getHours(); // returns hours
      

      【讨论】:

        【解决方案3】:

        前段时间我做了一个类似描述的函数:

        let timeOp = function(operation, initial, value) {
          // define the type of operation in bool if needed
          if(typeof operation == "string") {
            var operation = (operation == 'add') ? true : false;
          }
        
          // convert to minutes `value` if needded
          if(!Number.isInteger(value)) {
            var time = value.split(':');
            value = parseInt(time[0]) * 60 + parseInt(time[1]);
          }
        
          // split the string and get the time in minutes
          var time = initial.split(':');
          time = parseInt(time[0]) * 60 + parseInt(time[1]);
        
          // add or substract `value` to minute
          time += (operation) ? value : -value;
        
          // standardise minutes into hours
          var hour = Math.floor(time / 60);
          var minute = time % 60;
        
          // return with '0' before if needed
          return hour + ':' + ((minute>=10) ? minute : ('0' + minute))
        }
        
        let firstTime = "20:24";
        let secondTime = "20:00";
        console.log(timeOp('substract', firstTime, secondTime)
        

        它并不完美,也不允许使用秒。但是你可以很容易地通过修改上面的代码来解决这个问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-07
          • 1970-01-01
          • 2022-12-12
          • 2020-06-01
          • 1970-01-01
          • 2023-03-05
          • 2023-01-30
          • 1970-01-01
          相关资源
          最近更新 更多