【问题标题】:Get the dates in a week using week number using moment.js使用 moment.js 使用周数获​​取一周中的日期
【发布时间】:2018-07-25 09:34:20
【问题描述】:

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

【问题讨论】:

  • 我不明白这个问题。 “使用周数在一周中的总日期”是什么意思?一周不总是有 7 天吗?
  • 我知道还有 7 天。但我想要特定一周的日期。假设如果我考虑本周我想要 [22,23,24,25,26,27,28] 像这样..

标签: javascript angular momentjs


【解决方案1】:

要使用 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>

【讨论】:

    【解决方案2】:

    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 进行区域敏感周处理。

    【讨论】:

    • 谢谢@Amadan 我根据我的要求定制了你的代码,但这对我有很大帮助。非常感谢。
    猜你喜欢
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2022-06-29
    • 2017-09-16
    • 2021-12-31
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多