我们说我有约会:
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中的优雅解决方案
答案 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() });
}
其中startDate
和endDate
是日期对象。
请注意,该函数将返回长度为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;