计算工作日问题,javascript

时间:2014-04-17 21:50:40

标签: javascript datetime math

我有一系列用户选择的日期,如下所示:

days_selected[1] = true;
days_selected[2] = false;
days_selected[3] = false;
days_selected[4] = true;
days_selected[5] = true;
days_selected[6] = true;
days_selected[7] = true;

键表示工作日,如果用户检查了当天,则显示true / false

现在,我有当前的工作日,

date_now.getDay()

让我们说当前的工作日是星期一,1我需要找到星期一和第一天之间的天数,标记为真;

我知道我可以简单地循环这些日子,找到当天的日子,然后继续循环,直到我偶然发现另一个真实的日子,然后减去这些值,但我如何计算第6天是真的,而第7天和第7天1是假的,在这种情况下,它也将是两天之间,我在数学上很可怕: - )

passed = false;
day = 0;
$.each( days_selected, function( key, value ) {
    if (passed == true && value == true) {
        day = key;
        return false;
    }
    if (key == date_now.getDay()) {
        passed = true;
    }
});

2 个答案:

答案 0 :(得分:1)

这个怎么样? (假设索引从0开始)

var today = date_now.getDay()
  , i = today + 1;

while (i % 7 != today && !days_selected[i % 7]) {
  i += 1;
}

var interval = i - today - 1;

检查http://jsbin.com/jozotoke/1/edit

答案 1 :(得分:0)

这样的东西
function nextTrue(arr, selected, toCheck) {
    var first = arr.indexOf(toCheck, selected+1),
        res   = first > selected ? first : arr.indexOf(toCheck);
    return Math.abs(res - selected);
}

用作

var diff = nextTrue(days_selected, date_now.getDay(), true);

FIDDLE