根据所需日期的计数,获取两个日期之间线性分布的日期数组 - javascript,d3.js,moment.js

时间:2015-04-23 06:13:20

标签: javascript d3.js momentjs

我们说我有约会:

Mon Mar 31 2014 05:42:35 GMT+0200 (CEST)

Wed Sep 02 2015 10:29:38 GMT+0200 (CEST)

totalNumberOfDates = 37;

我希望得到37个日期的数组(第一个和最后一个日期应该是上面的日期),它们在给定日期之间完全线性分布。

我很欣赏D3.js或moment.js中的优雅解决方案

2 个答案:

答案 0 :(得分:5)

function getDateRange(startDate, endDate, steps)
{
    var stepSize = (endDate - startDate) / steps;
    return d3.range(steps + 1).map(function(i){ return moment(startDate).add(stepSize * i, 'ms').toDate() });
}

其中startDateendDate日期对象。

请注意,该函数将返回长度为steps+1的数组。因为从我的观点来看,这是合乎逻辑的。例如,如果你想要从12到14点的一步,我希望结果类似于[12oclock, 14oclock]

答案 1 :(得分:-1)



    var getMySpecialDates = function(d1,d2,r){
    d1 =  new Date(d1);
    d2 =  new Date(d2);
    var time = (d2.getTime()-d1.getTime())/(r);
    time = Math.floor(time);
    var temp = d1;
    var result = new Array()
    while(temp.getTime()<=(d2.getTime())){
        var f  = new Date(temp);
          result.push(f);
          temp.setTime(temp.getTime()+time);
          }
    return result;
}
var dates = getMySpecialDates("Mon Mar 31 2014 05:42:35 GMT+0200 (CEST)", "Wed Sep 02 2015 10:29:38 GMT+0200 (CEST)", 37);
console.log("Total Dates: " + dates.length);
for(var i=0;i<dates.length;i++){
console.log((dates[i]).toString());
}
&#13;
&#13;
&#13;