从今天开始,创建一个包含最近7天日期的名称数组 - javascript

3
我正在尝试创建一个JavaScript数组,它包含从今天开始的最近7天的名称。为了解决这个问题,我可以使用getDay()方法获得今天的日期,并将其作为访问星期几数组元素的索引。然而,我需要向后推算以创建过去几天的数组。我在网上找不到类似的问题解答。是否有更优雅的解决方案?或者jQuery可以提供帮助吗?

你的意思是像 ['星期四','星期三',...,'星期五'] 这样吗? - Mivaweb
你想要用哪种语言显示星期几的名称? - Rory McCrossan
@Rory McCrossan - 无论如何,但是可以先用英语。 - robjez
看看这个:https://dev59.com/zWHVa4cB1Zd3GeqPigF3 - twain
@twain - 这对我来说并不是很有用,伙计。 - robjez
3个回答

7

const days = ['monday', 'tuesday', 'wednesday', 'thursday', 
              'friday', 'saterday', 'sunday'];
var goBackDays = 7;

var today = new Date();
var daysSorted = [];

for(var i = 0; i < goBackDays; i++) {
  var newDate = new Date(today.setDate(today.getDate() - 1));
  daysSorted.push(days[newDate.getDay()]);
}

alert(daysSorted);


我必须说我喜欢@VDesign的优雅解决方案。我喜欢它可扩展的特点,因此我可以通过将7放入变量中来提供过去几天的数量。给你一个赞,伙计。 - robjez
我已经更新了解决方案,添加了一个变量来表示回溯的天数。 - Mivaweb
太棒了,这正是我在寻找的。 - robjez
现在非常清楚了。我只会将左花括号移到上一行,以防止 JavaScript 在这里出现问题(例如自动使用分号结束行),但除此之外,它就像“水一样清澈” :) - robjez
为什么将它变成 jQuery 依赖项?你根本不需要 jQuery。你可以将它变成自我调用函数 (function(){ })();。这也会影响性能效率,因为一周总共只有七天,使用循环内的日期函数是过度操作了。 - Edgar Griñant
显示剩余3条评论

1
function myFunction(day) {   
   var weekday =["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
   return weekday[day];    
}
var currentDate = new Date().getDay();
var week=[0,1,2,3,4,5,6];
var a=week.splice(currentDate);
var loopWeek=a.concat(week);
var freshWeek=[]; 
for(var i=0;i<loopWeek.length;i++){
freshWeek.push(myFunction(loopWeek[i]))
}
console.log(freshWeek);

感谢@Saravanan的尝试 - 但是上面的解决方案对我来说看起来更好。 - robjez

0
也许不是最优雅的方式:
var numdays = 7; // Change it to the number of days you need
var d = new Date();
var n = d.getDay();
var weekday = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
var myArray = new Array(numdays);
for(var i=0;i<numdays;i++){
  myArray[i]=weekday[(n-i+numdays)%7];
}
console.log(myArray); // Result:  ["Thursday", "Wednesday", "Tuesday", "Monday", "Sunday", "Saturday", "Friday"]

谢谢Edgar - 我仍在消化这个for循环。我在JavaScript方面不是很高效。 - robjez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接