[英]Get date of specific day of the week in JavaScript
我想我主要是脑屁。 我只想将Date()
快进到一周的特定日期,然后获得月,日,年。
例如今天是09/03/10但我想要一个函数( nextSession()
)返回09/08/10(下周三)。
我该怎么做? 我能想到的最好的事情是在setDate()
添加一天直到getDay()
== 3,但它有点难看......
PS jQuery也很酷。
function nextSession(date) {
var ret = new Date(date||new Date());
ret.setDate(ret.getDate() + (3 - 1 - ret.getDay() + 7) % 7 + 1);
return ret;
}
这个将日期设置为下周三。 如果已经是星期三,则结果将在给定日期之后一周。
编辑:增加了在没有参数的情况下调用函数的可能性: nextSession()
- 它从今天开始返回下一个会话日期
使用DateJS库 。
Date.parse('next wednesday');
如果你只需要周三,你应该可以这样做:
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() );
编辑:
或类似的东西? 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" )));
编辑:对同一周内尚未进入的日期进行了修正。
你去了: http : //jsfiddle.net/ePQuv/
js(不需要jQuery)是:
function addDays(myDate,days) {
return new Date(myDate.getTime() + days*24*60*60*1000);
}
function subtractDays(myDate,days) {
return new Date(myDate.getTime() - days*24*60*60*1000);
}
function dateOfNext(weekdayNumber) {
var today = new Date();
var lastSunday = subtractDays(today, today.getDay());
var daysToAdd = weekdayNumber;
if (weekdayNumber <= today.getDay()) {
daysToAdd = daysToAdd + 7;
}
return addDays(lastSunday, daysToAdd);
}
这样做是从当前日期减去当周的当天,到最后一个星期日。 然后,如果今天等于或等于“第二天”你正在寻找它增加7天+你想要到达的那一天,否则它只是添加星期几。 这将使您在任何给定的工作日下一次。
这是一个返回第二天号码的功能。
function nextDay(dayNb){
return function( date ){
return new Date(date.getTime() + ((dayNb-date.getDay() +7) %7 +1) *86400000);
};
}
要使用它,请设置您想要的日期编号0:周一 - 6:太阳
var nextWed = nextDay(2);
alert( nextWed( new Date() ));
如果使用日期,我建议使用moment.js 。
var nextmonday = moment().day(8).format('YYYY-MM-DD'); // e.g. 2015-10-26
var nexttuesday = moment().day(9).format('YYYY-MM-DD'); // e.g. 2015-10-27
var nextwednesday = moment().day(10).format('YYYY-MM-DD'); // e.g. 2015-10-28
var nextthursday = moment().day(11).format('YYYY-MM-DD'); // e.g. 2015-10-29
你可以选择不同的格式,做更好的东西,请查看: http : //momentjs.com/
简单计算:
//for next sunday, set 0, for saturday 6; wednesday == 3; var needDay = 3; var fromDate = new Date(); //or any date you calculate from fromDate.setDate(fromDate.getDate() + (7 - fromDate.getDay()) + needDay); console.log(fromDate);
+(7 - fromDate.getDay()) :添加日期将日期更改为星期日的天数。
+ needDay :如果周三增加你需要的一天,只需+3;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.