momentjs获得目标日期的工作日

时间:2016-05-04 10:41:27

标签: javascript date momentjs

我使用momentjs来处理日期,我使用以下内容获取本周:

var startDate =  moment().startOf('isoweek');
var endDate = moment().endOf('isoweek');
var weekDays = getWeekDays(startDate, endDate);

其中函数getWeekDays实现如下:

function getWeeDays(startDate, endDate) {
        "use strict";

        var days = [];
        var day = startDate;

        while (day <= endDate) {
            days.push(day);
            day = day.clone().add(1, 'd');
        }

        return days;
    }

这很好用,但现在我需要得到的不是本周的日子,而是目标日期的一周。 例如,用户输入日期为2016年5月24日,我需要从2016年5月23日星期一到2016年5月29日星期日开始。

我试过了:

var startDate = moment().startOf('isoweek').year(year).month(month).day(day);
var endDate = moment().endOf('isoweek').year(year).month(month).day(day);
var weekDays = getWeekDays(startDate, endDate);

其中变量year,month和day在此示例中等于:2016,05,24。这不起作用。您是否有任何使用momentjs的建议或如何在不使用momentjs的情况下进行操作?


更新

好的,我自己解决了!对于发布的问题,我把解决方案放在这里(首先检查日期是否有效!):

if(moment(year + "/" + month + "/" + day, "YYYY/MM/DD", true).isValid()){
    var startDate = moment(year + "/" + month + "/" + day, "YYYY/MM/DD").startOf('isoweek');
    var endDate = moment(year + "/" + month + "/" + day, "YYYY/MM/DD").endOf('isoweek');
    var weekDays = getWeekDays(startDate, endDate);
}

2 个答案:

答案 0 :(得分:0)

这就是我为解决问题所做的工作:

if(moment(year + "/" + month + "/" + day, "YYYY/MM/DD", true).isValid()){
    var startDate = moment(year + "/" + month + "/" + day, "YYYY/MM/DD").startOf('isoweek');
    var endDate = moment(year + "/" + month + "/" + day, "YYYY/MM/DD").endOf('isoweek');
    var weekDays = getWeekDays(startDate, endDate);
}

function getWeeDays(startDate, endDate) {
    "use strict";

    var days = [];
    var day = startDate;

    while (day <= endDate) {
        days.push(day);
        day = day.clone().add(1, 'd');
    }

    return days;
}

答案 1 :(得分:0)

`moment(anyValidDate).day()`
 // will return you the index of the day of given date.
//i.e. 0 for Sunday, 1 for Monday and so on till 6 for Saturday. list  of week days.

new Date().getDay() // will give same result as above.
接下来你知道该怎么做。