从javascript中获取周数和周数

时间:2010-12-29 15:23:59

标签: javascript date

我有周数和年份,需要查找该周和年份的日期(星期五)。

function getFriday(week_num, year)
{
    ?

    return friday_date_object;
}

我该怎么做?

4 个答案:

答案 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月和第一天的处理。