在JavaScript中获取特定星期几的日期

Osc*_*son 20 javascript jquery datetime

我想我主要是脑屁.我只想快速前进Date()到一周的特定日期,然后获得月,日,年.

例如今天是09/03/10,但我想要一个函数(nextSession())返回09/08/10(下周三).

我该怎么做?我能想到的最好的事情是增加一天setDate()直到getDay()== 3,但它有点难看......

PS jQuery也很酷.

pep*_*n88 30

function nextSession(date) {
    var ret = new Date(date||new Date());
    ret.setDate(ret.getDate() + (3 - 1 - ret.getDay() + 7) % 7 + 1);
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

这个将日期设置为下周三.如果已经是星期三,则结果将在给定日期之后一周.

编辑:增加了在没有参数的情况下调用函数的可能性:nextSession()- 它从今天开始返回下一个会话日期


Ada*_*dam 8

使用DateJS库.

Date.parse('next wednesday');
Run Code Online (Sandbox Code Playgroud)

  • 没有什么可以为我们的程序员编码或者什么?+1 (20认同)

use*_*716 5

如果你只需要周三,你应该可以这样做:

function next(today) {
    var offset = (today.getDay() < 3) ? 0 : 7;
    var daysUntilWednesday = 3 + offset - today.getDay();
    return new Date().setDate(today.getDate() + daysUntilWednesday);
}

var wed = next( new Date() );
Run Code Online (Sandbox Code Playgroud)

编辑:

或类似的东西?http://jsfiddle.net/zy7F8/1/

var days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];

function next(day) {

    var today = new Date();
    var today_day = today.getDay();

    day = day.toLowerCase();

    for (var i = 7; i--;) {
        if (day === days[i]) {
            day = (i <= today_day) ? (i + 7) : i;
            break;
        }
    }

    var daysUntilNext = day - today_day;

    return new Date().setDate(today.getDate() + daysUntilNext);

}

// insert a week day
alert(new Date(next( "Wednesday" )));?????????
Run Code Online (Sandbox Code Playgroud)

编辑:对同一周内尚未进入的日期进行了修正.