我有周数和年份,需要查找该周和年份的日期(星期五)。
function getFriday(week_num, year)
{
?
return friday_date_object;
}
我该怎么做?
答案 0 :(得分:16)
第一周是第一个星期四的一周。
这是一个可以获得任何一天的功能:
var w2date = function(year, wn, dayNb){
var j10 = new Date( year,0,10,12,0,0),
j4 = new Date( year,0,4,12,0,0),
mon1 = j4.getTime() - j10.getDay() * 86400000;
return new Date(mon1 + ((wn - 1) * 7 + dayNb) * 86400000);
};
console.log(w2date(2010, 1, 4));
周数从1开始到52或53它取决于年份 对于日期数字,0表示星期一,1表示星期二,... 4表示星期五
答案 1 :(得分:1)
使用date.js库。它适用于所有与日期相关的功能。
答案 2 :(得分:1)
这是一些快速代码
var DAY = 86400000;
function getFriday(weekNum, year) {
var year = new Date(year.toString()); // toString first so it parses correctly year numbers
var daysToFriday = (5 - year.getDay()); // Note that this can be also negative
var fridayOfFirstWeek = new Date(year.getTime() + daysToFriday * DAY);
var nthFriday = new Date(fridayOfFirstWeek.getTime() + (7 * (weekNum - 1) * DAY));
return nthFriday;
}
拆分一些变量以提高可读性。
但是如果你发现自己编写了更复杂的时间操作,那么最好使用库。
答案 3 :(得分:0)
我想如果我不应该使用任何日期库我会:
假设你使用基督教周,周日是一周的第一天。这是必要的,以确定一年中的第一天是否属于一年的第一周。
创建一个数组。 months = new Array(31,28,31,...) 如果(年%4 == 0),则2月有29天。
天= num_week * 7;
然后迭代一个月并逐月减少[当前]。如果天数再次与当前月份相比出现负增长天数。
结果:年 - (当前+ 1) - 天
我希望这会对你有所帮助。你必须自己添加的是1月和第一天的处理。