2

我正在使用此代码为本周的“日历”生成 5 个日期:

var days = new Array(4);
GetDaysOfWeek(new Date());

function GetDaysOfWeek(date)
{
    for (var i = 0; i < 5; i++)
    {
    var $dd = (date.getDate() - date.getDay() + 1 + i);
    var $mm = date.getMonth()+1;
    var $yyyy = date.getFullYear();
if($dd<10){$dd='0'+$dd}if($mm<10){$mm='0'+$mm}
days[i] = $dd+'/'+$mm+'/'+$yyyy;
    }
}

但是,根据它的日期,它可以在我的某些盒子上返回 00/10/2013 或 32/10/2013。似乎唯一正确的更新是我的实际日期。

我将如何更新这 5 个日期,以便获得正确的日期而不是不存在的日期。

提前致谢。

4

2 回答 2

0

这是从给定日期创建 5 个工作日的日期数组的一种更短的方法;

function weekdays(d){
  // set date [d] (or today) to the sunday before
  var d = (function(){ 
             this.setDate(this.getDate()-(this.getDay()));
             return this;
           }).apply(d || new Date);
  // create an Array with length 5 and map 5 dates starting
  // from date [d] into it
  return String(Array(5)).split(',')
            .map(function(){
               return new Date(this.setDate(this.getDate()+1));
             }, d);
}

它返回从日期前的第一个星期一开始的工作日,或者,如果给定日期是星期日,则返回下一周的工作日日期。

weekdays(); 
//=> [Mon Oct 21 2013 17:14:23 GMT+0200, ... ,Fri Oct 25 2013 17:14:23 GMT+0200] 
weekdays(new Date('2013/10/06'));
//=> [Mon Oct 07 2013 00:00:00 GMT+0200, ..., Fri Oct 11 2013 00:00:00 GMT+0200]

另请参阅:Mozilla DNmap

也许这个jsfiddle对你有用?

于 2013-10-23T15:18:24.037 回答
0
currentTimestamp = new Date().getTime()
currentDay = currentTimestamp-currentTimestamp%(24*60*60*1000)
for (var i = 1; i< 6; i++){
 nextDay = new Date(currentDay + i*24*60*60*1000)
 days[i] = nextDay.toString(); //specify the format yourself
}
于 2013-10-23T15:23:58.143 回答