【发布时间】:2020-06-15 03:44:06
【问题描述】:
我正在跟踪设备的使用情况,并按小时向用户展示他们的使用趋势。基本上,我需要查看times 文档,看看设备是否在下午 6 点和晚上 7 点之间、晚上 7 点和晚上 8 点、晚上 8 点和晚上 9 点,等等所有 24 小时之间“开启”。
这是我最初写的:
// loop through 24 hours of the day
for (let j = 0; j < 24; j++) {
const beginningOfHour = moment().startOf('day').add(j, 'hour').toDate()
const endOfHour = moment(beginningOfHour).add({ m: 59, s: 59, ms: 999 }).toDate()
const cumulativeHours = timePerPeriod(beginningOfHour, endOfHour, myTimes) // calculation func
trendsArray.push(cumulativeHours)
}
这不起作用,因为 beginningOfHour 和 endOfHour 也附有日期。
我不知道如何检查我的 times 文档中的小时部分,而没有任何日期参考。有关如何执行此操作的任何建议?
编辑:
这是times 文档的样子:
_id: 5e56cf9ae65bf2b30a6ab525 // ObjectID type
user_id: 5e56bb2b40ad526200401773 // ObjectID type
start: 2020-02-27T00:00:00.000+00:00 // Date type
stop: 2020-02-27T06:00:00.000+00:00 // Date type
设备可以开启任意时间长度,例如连续 3 个月或 15 秒。检查每个time 文档,如果它在该小时持续时间内打开任何长度的时间,我的计算函数(上面称为cumulativeHours)返回它在该小时内打开的长度(以毫秒为单位)。
【问题讨论】:
-
数据是否可以包含超过一天的事件?如果是这样,它们是累积的吗? 例如如果过去一周的每一天我都在晚上 8:30 打开我的设备,它应该返回 7 吗? 另外,您能否提供它在
myTimes变量中提供的示例数据? -
我用更多信息编辑了我的问题。
-
您能否将 24 小时时间转换为名为
time的整数并使用time > start && time < end?
标签: javascript node.js datetime momentjs