【发布时间】:2017-04-12 11:35:56
【问题描述】:
我什至不知道如何正确表达这个问题,但我正在尝试计算设备开启的总时间。我有一个 mysql 数据库,它记录设备开启或关闭的时间。
我的数据库的示例:
device id logtime status
---------------------------------------------------
17x1p14e6662 April 12th 2017, 1:05:52 pm ON
17x1p14e6662 April 12th 2017, 1:06:34 pm OFF
17x1p14e6662 April 12th 2017, 1:07:02 pm ON
17x1p14e6662 April 12th 2017, 1:14:00 pm OFF
17x1p14e6662 April 12th 2017, 1:34:52 pm ON
17x1p14e6662 April 12th 2017, 3:25:20 pm OFF
17x1p14e6662 April 12th 2017, 5:30:00 pm ON
我知道如何使用 momentJS 计算两个时间段之间的差异,类似这样(引用自 Get the time difference between two datetimes):
var now = "04/09/2013 15:00:00";
var then = "02/09/2013 14:20:30";
var ms = moment(now,"DD/MM/YYYY HH:mm:ss").diff(moment(then,"DD/MM/YYYY HH:mm:ss"));
var d = moment.duration(ms);
var s = Math.floor(d.asHours()) + moment.utc(ms).format(":mm:ss");
如果我检索一个设备的所有记录,我怎样才能只计算每个“ON”和“OFF”之间的总时间?
【问题讨论】:
-
每个“ON”时间也是“OFF”时间吗?
-
是的,它总是交替出现,每个“ON”后面都会跟着“OFF”。
-
那么你为什么不创建一个所有“ON”和一个“OFF”时间的数组。然后遍历它们并计算差异......
-
“ON”和“OFF”的记录数不一样怎么办?例如,如果一个设备仍然是“ON”,那么不会有“OFF”记录吗?另外,我是初学者,我什至不知道如何从那个大声笑开始。
-
这就是我在第一个问题中所要求的...... :) 所以没有相同的数字......问题就是你想要做的。您可以计算到现在的时间或停止计算。那是你的选择:)