我想找到过去几天的名字。我正在使用此脚本成功获取过去7天的名称,但是,如果我增加过去几天,例如7天前,8天或更长时间,它将无效。
var dayOfWeek = new Array();
dayOfWeek[0] = "Sun";
dayOfWeek[1] = "Mon";
dayOfWeek[2] = "Tue";
dayOfWeek[3] = "Wed";
dayOfWeek[4] = "Thu";
dayOfWeek[5] = "Fri";
dayOfWeek[6] = "Sat";
var myDate = new Date();
myDate.setDate(myDate.getDate());
var myDate1 = new Date();
myDate1.setDate(myDate1.getDate() - 1);
var myDate2 = new Date();
myDate2.setDate(myDate2.getDate() - 2);
var myDate3 = new Date();
myDate3.setDate(myDate3.getDate() - 3);
var myDate4 = new Date();
myDate4.setDate(myDate4.getDate() - 4);
var myDate5 = new Date();
myDate5.setDate(myDate5.getDate() - 5);
var myDate6 = new Date();
myDate6.setDate(myDate6.getDate() - 6);
var on1 = dayOfWeek[myDate.getDay()];
var on2 = dayOfWeek[myDate1.getDay()];
var on3 = dayOfWeek[myDate2.getDay()];
var on4 = dayOfWeek[myDate3.getDay()];
var on5 = dayOfWeek[myDate4.getDay()];
var on6 = dayOfWeek[myDate5.getDay()];
document.write(on5);
这样做的正确方法是什么?
答案 0 :(得分:3)
如果我理解正确,你会尝试做类似的事情(假设今天是星期三):
如果这是正确的,那么应该这样做:
function getDayOfWeekAgo(daysAgo) {
var today = new Date().getDay(),
days = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
today = (today+daysAgo*6)%7; // adding 6 per day is the same as subtracting one
// due to the modulo, just without the complications
// that negative numbers would bring
return days[today];
}
或者,更有效率:
window.getDayOfWeekAgo = (function() {
var today = new Date().getDay(),
days = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
return function(daysAgo) {return days[(today+daysAgo*6)%7];}
})();