根据指定日期获取工作日的范围

时间:2017-07-19 12:22:58

标签: javascript date momentjs

根据指定日期获取周日期

currentDate = moment().date();
// 19

是否可以在数组中获得工作日的范围,如此?

[16,17,18,19,20,21,22]

是否有一种简易方法或我可以使用的已知库来实现这一目标?

由于

4 个答案:

答案 0 :(得分:2)

我不了解相关的图书馆,但有一种方法:

var currentDate = new Date; // get current date
var first = currentDate.getDate() - currentDate.getDay(); // First day
var last = first + 6; // last day
var list = [];
for (var i = first; i <= last; i++) {
    list.push(i);
}
list
> [16, 17, 18, 19, 20, 21, 22]

答案 1 :(得分:2)

您可以做以下事情:

function getWeekDaysByWeekNumber(num) {
    var week = moment().week(num);
    var weekDays = [];

    for(var idx=0; idx< 7; idx++) {
        weekDays.push(week.day(idx).date());
    }

    return weekDays;
}

我刚尝试过,似乎工作正常。

说明:

  • week(num)方法返回指向给定周数的时刻对象。例如,week(20)会在20周内给我一个日期。

  • week.day(num)给出了一周中给定的一天(0-6),其中0表示星期日,6表示星期六。

答案 2 :(得分:0)

Underscore.js具有range()功能。那是你要的吗? http://underscorejs.org/#range

您可以执行以下操作:

var RANGE_DISTANCE = 3;
var CENTER = 19;
_.range(CENTER - RANGE_DISTANCE, CENTER + RANGE_DISTANCE + 1)

你可以抽象出一个函数:

function generateRangeAroundCenter(var center, var range_distance) {
    return _.range(center-range_distance, center+range_distance+1);
}

虽然仅仅为此导入下划线似乎有点过分。

我在这里看到了你想要的一些很好的例子: Does JavaScript have a method like "range()" to generate an array based on supplied bounds?

有些例子根本不使用图书馆,例如this。如果这有助于您,或者您正在寻找其他内容,请告诉我。

答案 3 :(得分:0)

用于订购日期的格式 ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

可以使用moment().day()将当前工作日提升到相应的工作日工作日。如果今天是星期三,它将返回3。

根据这些值,您可以计算一周中的其余日期。