计算员工的上班时间

时间:2019-09-30 10:20:46

标签: node.js mongodb algorithm

我正在尝试为员工创建时间表,将每个事件(活动,不活动)保存为MongoDB中的时间戳。如何根据给定时间计算员工的活动时间?

{ 
    "_id" : ObjectId("5d8c8dcca4c6010e29140e0e"), 
    "activityAt" : ISODate("2019-09-26T10:07:05.388+0000"), 
    "version" : NumberInt(1), 
    "deleted_at" : null, 
    "event" : "ACTIVE", 
    "employeeId" : ObjectId("5d78fba602c9265fc7ad6273"), 
    "created_at" : ISODate("2019-09-26T10:07:08.479+0000"), 
    "modified_at" : ISODate("2019-09-26T10:07:08.479+0000")
}
// ----------------------------------------------
{ 
    "_id" : ObjectId("5d8c8dcca4c6010e29140e0f"), 
    "activityAt" : ISODate("2019-09-26T11:07:05.388+0000"), 
    "version" : NumberInt(1), 
    "deleted_at" : null, 
    "event" : "INACTIVE", 
    "employeeId" : ObjectId("5d78fba602c9265fc7ad6273"), 
    "created_at" : ISODate("2019-09-26T11:07:08.481+0000"), 
    "modified_at" : ISODate("2019-09-26T11:07:08.481+0000")
}

1 个答案:

答案 0 :(得分:0)

对于每个“活动”条目,请从ISODate中获取日期,并从中减去当前日期(或任何给定时间)。结果将是员工拥有的所有活动时间。

使用伪代码:

active_time = 0
for entry in db:
    if entry.event == 'ACTIVE':
        active_time = active_time + (current_date - entry.ISODate)
return active_time

您唯一需要做的就是将日期转换为可以减去/加/等的日期。一种解决方案是将其转换为小时。

祝你好运!