[英]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.