使用moment.js使用周数获​​取一周中的日期

时间:2018-07-25 09:34:20

标签: javascript angular momentjs

如何获取指定星期的数组中的日期?

2 个答案:

答案 0 :(得分:2)

要使用weekNumber获取星期几,请设置星期数,获取startOf周,然后迭代获取每个日期。如果未指定周,则使用一年的第一周。

var dateformat = "YYYY/MM/DD";
function getWeekDaysByWeekNumber(weeknumber)
{
    var date = moment().isoWeek(weeknumber||1).startOf("week"), weeklength=7, result=[];
    while(weeklength--)
    {
        result.push(date.format(dateformat));
        date.add(1,"day")
    }
    return result;
}

console.log(getWeekDaysByWeekNumber())
console.log(getWeekDaysByWeekNumber(2))
console.log(getWeekDaysByWeekNumber(25))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

要获取使用日期的星期几,请设置startOf周并进行迭代以获取每个日期。如果未指定日期,则使用today的日期。

var dateformat = "YYYY/MM/DD";
function getWeekDaysByDate(date)
{
    var date = date ? moment(date,dateformat) : moment(), weeklength=7, result=[];
    date = date.startOf("week")
    while(weeklength--)
    {
        result.push(date.format(dateformat));
        date.add(1,"day")
    }
    return result;
}

console.log(getWeekDaysByDate())
console.log(getWeekDaysByDate("2018/07/18"))
console.log(getWeekDaysByDate("2018/06"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

答案 1 :(得分:1)

2015年第16周(ISO)的所有天:

let days = [1, 2, 3, 4, 5, 6, 7]
  .map(d => moment('2015-16-' + d, 'YYYY-W-E'));
console.log(days);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment-with-locales.min.js"></script>

使用YYYY-w-e进行对语言环境敏感的星期处理。