怎么实现根据个人空闲时间计算出集体的空闲时间并显示出来
发布于 9 年前 作者 AaronLeong 4350 次浏览 最后一次编辑是 8 年前 来自 问答

需求:假如有8个人,每个人的空闲时间都不一样,比如说 A:的空闲时间为星期一12:12-14:00 B:的空闲时间为星期一10:40-15:00 C:的空闲时间为星期一16:12-17:00 D:的空闲时间为星期一15:22-16:10 E:的空闲时间为星期一22:12-24:00 F:的空闲时间为星期一9:15-14:00 G:的空闲时间为星期一8:12-14:00 H:的空闲时间为星期一12:12-16:00

或者有什么模块、js 能计算 非常感谢

4 回复

如果空闲时间是以小时划分,你有办法吗?

我的想法是。把一天分成一个长度为 24 * 60 的数组,默认都是 false。然后根据这 8 个人的空闲时间,把对应的点标记成 true。再用 lodash 对这 8 个数组做并集,并集的结果就是大家共同的空闲时间。

觉得离散处理可能计算量和内存都比较吓人。。。

function intersect(...times) {
  var time0 = [0, 24];
  for (let time of times) {
    if (time0[0] >= time[1] || time[1] < time[0])
      return;
    else
      time0 = [Math.max(time0[0], time[0]), Math.min(time0[1], time[1])];
  }
  return time0
}

intersect([1,70], [2, 60], [3,20], [1, 10])

为何不用位运算呢??? 先将每个人的时间按小时算,0为非空闲,1为空闲,假如A为12:12-14:00,那么实际设定的就为 0000 0000 0000 1100 0000 0000 其中1就为该非空闲的时间段 然后遍历每个人后将这些二进制数据 与运算,最后得出大家都空闲的小时。 然后细分到 分钟的话同小时类似。

回到顶部