使用Javascript日期,获得0或以上31

时间:2013-10-23 14:56:02

标签: javascript date

我使用此代码为本周的“日历”生成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个日期,以便获得正确的日期而不是不存在的日期。

提前致谢。

2 个答案:

答案 0 :(得分: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]

另请参阅:map

上的Mozilla DN

也许this jsfiddle对你有用吗?

答案 1 :(得分: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
}