momentjs如何将moment对象添加到数组中

3

js:

service.search = function (goDate, returnDate) {

  var outwardInterval = {};
  outwardInterval.start = moment(goDate, 'YYYY-MM-DD').subtract(3, 'day');
  outwardInterval.end = moment(goDate, 'YYYY-MM-DD').add(3, 'day');

  matrice.outwardDates = buildDateArray(outwardInterval);

}
var buildDateArray = function (interval) {
    var array = [];
    var currentDate = interval.start;
    do {
        array.push(currentDate);
        currentDate.add(1, 'day');
    } while (!currentDate.isAfter(interval.end));

    return array;
};

我的输出:

在这里输入图片描述

为什么我的数组中有相同的值..?

更新:

JSFIDDLE


你能解释一下需求是什么吗? - Ved
@Ved 我没有看到你的回答。 - Mercer
检查一下,我刚刚发布了。我不认为这是你的答案。但它可能会在某种程度上帮助你。 - Ved
@Ved,它可以工作,但不完全符合我的要求,在我的数组中,我想要时刻对象。 - Mercer
好的,我正在查看你的代码。 - Ved
显示剩余6条评论
2个回答

1
扩展我的评论:
function GetDates(startDate, daysToAdd) {
  var aryDates = [];
  for(var i = 0; i <= daysToAdd; i++) {
   var currentDate = new Date();
   currentDate.setDate(startDate.getDate() + i);
   aryDates.push(DayAsString(currentDate.getDay()) + ", " + currentDate.getDate() + " " + MonthAsString(currentDate.getMonth()) + " " + currentDate.getFullYear());
  }

  return aryDates;
 }

 function MonthAsString(monthIndex) {
  var d=new Date();
  var month=new Array();
  month[0]="Jan";
  month[1]="Feb";
  month[2]="March";
  month[3]="April";
  month[4]="May";
  month[5]="June";
  month[6]="July";
  month[7]="Aug";
  month[8]="Sep";
  month[9]="Oct";
  month[10]="Nov";
  month[11]="Dec";

  return month[monthIndex];
 }

 function DayAsString(dayIndex) {
  var weekdays = new Array(7);
  weekdays[0] = "Sun";
  weekdays[1] = "Mon";
  weekdays[2] = "Tue";
  weekdays[3] = "Wed";
  weekdays[4] = "Thu";
  weekdays[5] = "Fri";
  weekdays[6] = "Sat";

  return weekdays[dayIndex];
 }

 var startDate = new Date();
 var aryDates = GetDates(startDate, 7);
 console.log(aryDates);

Fiddle: http://jsfiddle.net/u93g87qc/2/


注:该段文字包含HTML标记,显示在网页中时会呈现为超链接样式,其中表示该超链接的名称,链接地址是http://jsfiddle.net/u93g87qc/2/。

-1

实际上,您在数组中的每个值上并没有得到相同的日期。您正在与 moment.js 进行斗争。如果您稍微修改一下代码,执行 momenttoDate 方法,您会发现它可以正常工作:

var matrice = { };
var service = { };

service.search = function (goDate, returnDate) {

  var outwardInterval = {};
  outwardInterval.start = moment(goDate, 'YYYY-MM-DD').subtract(3, 'day');
  outwardInterval.end = moment(goDate, 'YYYY-MM-DD').add(3, 'day');

  matrice.outwardDates = buildDateArray(outwardInterval);

}

var buildDateArray = function (interval) {
    console.clear();
    console.log('Start: ', interval.start.toDate());
    console.log('End: ', interval.end.toDate());

    var array = [];
    var currentDate = interval.start;

    console.log('Initial date: ', currentDate.toDate());

    do {
        array.push(currentDate.toDate());
        currentDate.add(1, 'days');

        console.log('Current date: ', currentDate.toDate());
    } while (!currentDate.isAfter(interval.end));

    return array;
};

service.search('2014-12-25');

输出:

Start:  Mon Dec 22 2014 00:00:00 GMT-0700 (Mountain Standard Time)
End:  Sun Dec 28 2014 00:00:00 GMT-0700 (Mountain Standard Time)
Initial date:  Mon Dec 22 2014 00:00:00 GMT-0700 (Mountain Standard Time)
Current date:  Tue Dec 23 2014 00:00:00 GMT-0700 (Mountain Standard Time)
Current date:  Wed Dec 24 2014 00:00:00 GMT-0700 (Mountain Standard Time)
Current date:  Thu Dec 25 2014 00:00:00 GMT-0700 (Mountain Standard Time)
Current date:  Fri Dec 26 2014 00:00:00 GMT-0700 (Mountain Standard Time)
Current date:  Sat Dec 27 2014 00:00:00 GMT-0700 (Mountain Standard Time)
Current date:  Sun Dec 28 2014 00:00:00 GMT-0700 (Mountain Standard Time)
Current date:  Mon Dec 29 2014 00:00:00 GMT-0700 (Mountain Standard Time)

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