0

私は過去の日の名前を見つけようとしています。このスクリプトを使用して過去 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);

それを行う正しい方法は何ですか?

4

1 に答える 1

3

私があなたを正しく理解していれば、あなたは次のようなことをしようとしています (今日が水曜日であると仮定して):

  • 2日前は月曜日
  • 5日前は金曜日
  • 8日前は火曜日でした

これが正しければ、次のようにする必要があります。

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];}
})();
于 2013-04-08T03:01:12.360 に答える