【问题标题】:Get the week number of the month from week number of the year从一年中的周数获取当月的周数
【发布时间】:2016-02-12 08:45:24
【问题描述】:

我有一个函数返回一年中的当前周,例如 43,45 等。

我想要的是把它作为当月的第 1 周第 2 周。

P.S 我只有一年中的当前周,没有日期

【问题讨论】:

标签: node.js


【解决方案1】:
var getWeekOfMonth = function(date) {
    var month = date.getMonth(),
        year = date.getFullYear(),
        firstWeekday = new Date(year, month, 1).getDay(),
        lastDateOfMonth = new Date(year, month + 1, 0).getDate(),
        offsetDate = 7 - firstWeekday,
        daysAfterFirstWeek = lastDateOfMonth - offsetDate,
        weeksInMonth = Math.ceil(daysAfterFirstWeek / 7) + 1;

    var noOfDaysAfterRemovingFirstWeek = date.getDate() - offsetDate;
    if (noOfDaysAfterRemovingFirstWeek <= 0) {
        week = 1;
    } else if (noOfDaysAfterRemovingFirstWeek <= 7) {
        week = 2;
    } else if (noOfDaysAfterRemovingFirstWeek <= 14) {
        week = 3;
    } else if (noOfDaysAfterRemovingFirstWeek <= 21) {
        week = 4;
    } else if (weeksInMonth >= 5 && noOfDaysAfterRemovingFirstWeek <= 28) {
        week = 5;
    } else if (weeksInMonth === 6) {
        week = 6;
    }
    return week;
};

【讨论】:

  • 2016 年 7 月有 6 周。
【解决方案2】:

使用“时刻”模块:

var moment = require('moment');

function foo(weekOfYear) {
    var dayOfMonth = moment().week(weekOfYear).date();
    var weekOfMonth = Math.ceil(dayOfMonth / 7);
    return weekOfMonth;
}

console.log(foo(1)) //1
console.log(foo(11)) //2
console.log(foo(12)) //3
console.log(foo(13)) //4
console.log(foo(14)) //1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-29
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多