【发布时间】:2016-02-12 08:45:24
【问题描述】:
我有一个函数返回一年中的当前周,例如 43,45 等。
我想要的是把它作为当月的第 1 周第 2 周。
P.S 我只有一年中的当前周,没有日期
【问题讨论】:
-
这是这个问题的另一个答案:stackoverflow.com/a/9608670/334274
-
我只有一年中的周数。这是一个不同的问题
标签: node.js
我有一个函数返回一年中的当前周,例如 43,45 等。
我想要的是把它作为当月的第 1 周第 2 周。
P.S 我只有一年中的当前周,没有日期
【问题讨论】:
标签: node.js
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;
};
【讨论】:
使用“时刻”模块:
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
【讨论】: