PHP中的平均睡眠间隔

时间:2012-04-21 13:34:18

标签: php time sleep average period

我需要从以下数据中获得平均睡眠间隔:

  • 22:00-06:00
  • 00:00-08:00
  • 02:00-10:00

=> 预期:00:00-08:00

  • 22:00-06:00
  • 00:00-08:00
  • 02:00-10:00
  • 04:00-08:00

=> 预期:01:00-08:00

问题是午夜左右振荡,部分时间在00:00以下,部分时间在00:00左右。 简单的意思是22 + 00 + 02 + 04不起作用。我可以计算午夜的次数(在这种情况下为3次),如果它超过午夜之前,我应该加上25次补偿。 但这并不算那些晚上工作并在8-14岁左右睡觉的人

我的理论是:首先,以某种方式我需要找到峰值,类似于最常去的区域(例如,在9-10中有5个记录,在10-11中,有3个等。 )然后我可以通过增加24小时来决定共同补偿边界值。

您怎么看?

3 个答案:

答案 0 :(得分:1)

考虑到午夜的相对差异怎么样? 结果将是(-2 + 0 + 2 + 4)/ 4 = 00:45

答案 1 :(得分:0)

确定您可以说的下限

  

好的,人们不会在这一天的这个时间去睡觉,如果我得到这个时间,那一定意味着他们整晚都在工作,现在才睡觉

如果时间低于该限制,请在开始和结束时添加24小时。

答案 2 :(得分:0)

假设这个人没有超过24小时睡觉,然后做一个像这样计算的方法(伪代码):

calculateSleepTime(sleepTime, wakeupTime) {
    if (sleepTime > wakeupTime) {
        return (24 - sleepTime) + wakeupTime;
    } else {
        return wakeupTime - sleepTime;
    }
}

averageSleepTime(sleepTimesArray) {
    totalSleptTime = 0;
    totalTimesSlept = 0;

    foreach (oneSleepTime in sleepTimesArray) { 
        totalTimesSlept++;
        totalSleptTime += calculateSleepTime(oneSleepTime);
    }

    return totalSleptTime / totalTimesSlept;
}

获得平均睡眠时间后,计算平均睡眠时间或平均唤醒时间,并进行加/减以查找间隔。另一种方法是找到平均睡眠时间和平均唤醒时间(相对于午夜时间考虑)。