繁体   English   中英

如何与Momentjs一起增加时间

[英]How to add times together with Momentjs

我有一个应用程序,可以记录设备打开和关闭的时间。 它将详细信息记录在mysql数据库中。 我想计算设备已开启多长时间。 我使用jquery / ajax在两个数组中获取两组数据:ON和OFF。

数据库结构:

  device id             logtime           status
---------------------------------------------------
17x1p14e6662  April 12th 2017, 1:05:52 pm   ON
17x1p14e6662  April 12th 2017, 1:06:34 pm   OFF
 .... etc

然后,我遍历它们以计算时差。 这很好。 然后如何将所有结果时间输出添加到单个时间中?

这是jquery / ajax的一部分:

我的php后端的响应是:

{"result":{"trueresults":[["April 12th 2017, 1:05:52 pm"],["April 12th 2017, 1:05:54 pm"],["April 12th 2017, 1:06:54 pm"],["April 12th 2017, 4:54:10 pm"]],"falseresults":[["April 12th 2017, 1:05:53 pm"],["April 12th 2017, 1:05:55 pm"],["April 12th 2017, 1:07:02 pm"],["April 12th 2017, 4:56:18 pm"]]},"errors":false}

实际的jQuery代码:

    .success(function(response) {
        if(!response.errors && response.result) {        

            var trueresultgroup = response.result.trueresults;
            var falseresultgroup = response.result.falseresults;

                for (i = 0; i < trueresultgroup.length; i++) {                  
                    var on = (trueresultgroup[i]).toString();
                    var off = (falseresultgroup[i]).toString();
                    var ms = moment(off,"MMMM Do YYYY, h:mm:ss a").diff(moment(on,"MMMM Do YYYY, h:mm:ss a"));
                    var d = moment.duration(ms);
                    var s = d.format("hh [hours] :mm [minutes] :ss [seconds]");
                    $("#divtimes").append('<p>'+s+'</p>');


                }

        } else {
            alert("error");
        }
    }); 

所以我的html中的输出看起来像这样:

<div id="divtimes" class="m-b-30"><p>01 seconds</p><p>01 seconds</p><p>08 seconds</p><p>02 minutes :08 seconds</p></div>

我想要的输出应该是所有这些的总和:

02 minutes :18 seconds

https://momentjs.com/docs/#/manipulating/add/

由于您已经设置了持续时间,因此可以使用添加持续时间来组合时间,如下所示:

var duration = moment.duration({'days' : 1});
moment([2012, 0, 31]).add(duration); // February 1

只需计算循环内所有持续时间的总和,然后在循环外打印结果即可。

从0 ms的持续时间( moment.duration(0) )开始,然后使用add添加计算出的差异。 在循环外部打印结果。

您的代码可能如下所示:

// Create a duration of 0 ms
var tot = moment.duration(0);
for (i = 0; i < trueresultgroup.length; i++) {                  
  var on = (trueresultgroup[i]).toString();
  var off = (falseresultgroup[i]).toString();
  var ms = moment(off,"MMMM Do YYYY, h:mm:ss a").diff(moment(on,"MMMM Do YYYY, h:mm:ss a"));
  tot.add(ms, 'ms');
}
var s = tot.format("hh [hours] :mm [minutes] :ss [seconds]");
$("#divtimes").append('<p>'+s+'</p>');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM