如何计算一段时间内的不同分钟数

时间:2014-12-06 05:06:40

标签: javascript php datetime time date-arithmetic

不确定是否是正确的词。

这是一个用来解释我想要的内容的补充场景。

假设有两个美发沙龙。

Salon A有2名员工。 沙龙B有1名员工。

假设我想计算在给定时间内沙龙的活动时间。

如果沙龙A有以下头发预约:

  • 顾客A:从0分钟开始,以10分钟(剪头发10分钟)结束
  • 顾客B:2分钟开始,12分钟结束(剪头发10分钟)

沙龙B有以下头发预约:

  • 顾客C:从0分钟开始,以10分钟(剪头发10分钟)结束
  • 顾客D:从10分钟开始,以20分钟(剪头发10分钟)结束

在这种情况下,我希望看到:

  • 沙龙A - 12分钟活动
  • 沙龙B - 20分钟的活动

然后我可以说,如果顾客E去沙龙A,他们会等待大约6分钟让队列中的每个人都剪头发但是如果他们去沙龙B他们会等待每个客户提前约10分钟。 (活动除以客户完成)。我需要一种方法来计算这个,而不依赖于沙龙的工作人员数量。

我能想到的一种方法是拥有一个数组并用独特的分钟填充它。例如 对预订进行评估并将每一分钟添加到阵列中,随后的预订将只写出已经填充的现有分钟,然后我将有一个包含12项(分钟)的沙龙A和20项(分钟)数组沙龙B.我相信这会有用,但想知道是否有更好/更实用的方法吗?

我不介意用什么语言来看逻辑。

1 个答案:

答案 0 :(得分:0)

这是一个简单的尝试,在JavaScript中。

说,每个客户10分钟,这是一个常数。所以对于Salon B来说,这非常简单:只有1个理发师,活动时间 10 *客户数量

现在对于沙龙A,说app是一个存储每个约会起点的数组。例如:

var app = [0, 2, 10, 13, 20, 32]

这意味着有6个顾客(可能是这样的:理发师A有0-10,10-20,20-30,32-42,理发师B有2-12,13-23,理发师A差)。 / p>

我们有一个arry timeline。让我们循环app

var timeline = [];
for(var i = 0; i < app.length; i++) {
    for(var j = app[i]; j < app[i] + 10; j++) {
        timeline[j] = 1;
    }
}

现在,timeline显式记录每个活动分钟,还包含非活动孔。 1表示有效,undefined表示无效。

然后我们会减少timeline,这会自动跳过undefined

var activity = timeline.reduce(function(a, b) {
    return a + b;
});
activity; // 40
  1. 你明白了!

  2. 编辑:这只是一个问题,我确信还有其他问题,可能比这个更好:)