Javascript 如何确定哪一天是星期五?

Javascript 如何确定哪一天是星期五?,javascript,date,Javascript,Date,我有两个下拉列表-一年一周。如何确定选定的星期日应为星期五。例如,我选择了第34周和2011年,然后我应该知道星期五的日期,格式如下:2011-08-23。 最好也使用javascript 使用。它对于任何与日期相关的Javascripting都非常方便 他们网站上的例子: // What date is next thrusday? Date.today().next().thursday(); // Add 3 days to Today Date.today().add(3).days(

我有两个下拉列表-一年一周。如何确定选定的星期日应为星期五。例如,我选择了第34周和2011年,然后我应该知道星期五的日期,格式如下:2011-08-23。 最好也使用javascript

使用。它对于任何与日期相关的Javascripting都非常方便

他们网站上的例子:

// What date is next thrusday?
Date.today().next().thursday();

// Add 3 days to Today
Date.today().add(3).days();

// Is today Friday?
Date.today().is().friday();

// Number fun
(3).days().ago();

// 6 months from now
var n = 6;
n.months().fromNow();

// Set to 8:30 AM on the 15th day of the month
Date.today().set({ day: 15, hour: 8, minute: 30 });

// Convert text into Date
Date.parse('today');
Date.parse('t + 5 d'); // today + 5 days
Date.parse('next thursday');
Date.parse('February 20th 1973');
Date.parse('Thu, 1 July 2004 22:30:00');
鉴于的最新版本(来自SVN),以下内容将为您提供所需内容

function date_of_friday(year, week) {
    return Date.parse(year + "-01-01").setWeek(week).next().friday();
}
如下所示,这为您的示例以及一年中的第一天在第1周和第1周不在的情况给出了正确答案(根据,第1周是包含一年中第一个星期四的一周)


您也可以使用较小的“库”:

Date.fromWeek= function(nth, y, wkday){
    y= y || new Date().getFullYear();
    var d1= new Date(y, 0, 4);
    if(wkday== undefined) wkday= 1;
    return d1.nextweek(wkday, nth);
}
Date.prototype.nextweek= function(wd, nth){
    if(nth== undefined) nth= 1;
    var incr= nth < 0? 1: -1,
    D= new Date(this), dd= D.getDay();
    if(wd== undefined) wd= dd;
    while(D.getDay()!= wd) D.setDate(D.getDate()+ incr);
    D.setDate(D.getDate()+ 7*nth);
    return D;
}
// test case
var dx= Date.fromWeek(34, 2011, 5);
alert([dx.getFullYear(), dx.getMonth()+1, dx.getDate()].join('-'));
/*returned value: (String) 2011-8-26*/
Date.fromWeek=函数(n,y,wkday){
y=y | |新日期().getFullYear();
var d1=新日期(y,0,4);
如果(wkday==未定义)wkday=1;
返回d1.下一周(工作日,N);
}
Date.prototype.nextweek=函数(wd,N){
如果(n=未定义)n=1;
var incr=n<0?1:-1,
D=新日期(本),dd=D.getDay();
如果(wd==未定义)wd=dd;
而(D.getDay()!=wd)D.setDate(D.getDate()+incr);
D.setDate(D.getDate()+7*n);
返回D;
}
//测试用例
var dx=日期自周(2011年5月34日);
警报([dx.getFullYear(),dx.getMonth()+1,dx.getDate()).join('-');
/*返回值:(字符串)2011-8-26*/

@Matt你很痛苦。在使用之前,期待OP采取一点主动并了解一些关于库的知识并没有什么错。这就是为什么他们在学校给你布置家庭作业——学习。@Matt
Date.parse('week 34')。set({year:2011})
不一定给你2011年第34周。它将获得当前年份第34周的星期一的日期,并将年份更改为2011年,给出2011年的相同日期。这可能不是在星期一,也可能不是在第34周。如果你自己也回答了这个问题,我认为一个很低的投票率是非常糟糕的,你投票的答案并不完全是午餐。它显示出一定程度的不成熟。
Date.fromWeek= function(nth, y, wkday){
    y= y || new Date().getFullYear();
    var d1= new Date(y, 0, 4);
    if(wkday== undefined) wkday= 1;
    return d1.nextweek(wkday, nth);
}
Date.prototype.nextweek= function(wd, nth){
    if(nth== undefined) nth= 1;
    var incr= nth < 0? 1: -1,
    D= new Date(this), dd= D.getDay();
    if(wd== undefined) wd= dd;
    while(D.getDay()!= wd) D.setDate(D.getDate()+ incr);
    D.setDate(D.getDate()+ 7*nth);
    return D;
}
// test case
var dx= Date.fromWeek(34, 2011, 5);
alert([dx.getFullYear(), dx.getMonth()+1, dx.getDate()].join('-'));
/*returned value: (String) 2011-8-26*/