Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取两个日期之间的线性排列的日期数组,给定所需日期的计数-javascript、d3.js、moment.js_Javascript_D3.js_Momentjs - Fatal编程技术网

获取两个日期之间的线性排列的日期数组,给定所需日期的计数-javascript、d3.js、moment.js

获取两个日期之间的线性排列的日期数组,给定所需日期的计数-javascript、d3.js、moment.js,javascript,d3.js,momentjs,Javascript,D3.js,Momentjs,假设我有约会: 2014年3月31日星期一05:42:35 GMT+0200(CEST) 2015年9月2日星期三10:29:38 GMT+0200(CEST) 和totalNumberOfDates=37 我想得到37个日期的数组(第一个和最后一个日期应该是上面的那个些),它们在给定的日期之间精确地线性分布 我很欣赏D3.js或moment.js中优雅的解决方案 var getMySpecialDates=函数(d1、d2、r){ d1=新日期(d1); d2=新日期(d2); 变量时间=(d

假设我有约会:

2014年3月31日星期一05:42:35 GMT+0200(CEST)

2015年9月2日星期三10:29:38 GMT+0200(CEST)

totalNumberOfDates=37

我想得到37个日期的数组(第一个和最后一个日期应该是上面的那个些),它们在给定的日期之间精确地线性分布

我很欣赏D3.js或moment.js中优雅的解决方案
var getMySpecialDates=函数(d1、d2、r){
d1=新日期(d1);
d2=新日期(d2);
变量时间=(d2.getTime()-d1.getTime())/(r);
时间=数学。楼层(时间);
var-temp=d1;
var result=新数组()
while(temp.getTime()
其中
startDate
endDate
Date对象


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

将变量设置为具有第一个日期值的
Date
对象。循环35次,每次向该变量添加37天。如果您遇到问题,请在此处发布代码,人们可以帮助您。我认为您误解了问题。日期不应分散37天…它应该返回35个日期对象的数组,这是一个we’在给定的两个日期对象之间精确地线性分布……那么步长是多少?无论如何,如果我们可以忽略步长(我不确定它是什么),然后您需要做的就是找出每个“步骤”的天数。因此,在伪代码中:
d1=第一个日期
d2=第二个日期
total_days=d2-d1
,最后是
days_per_step=total_days/35
。现在您可以按照我的指示,使用days_per_per_step而不是37t、 步长名称可能有点误导。它应该在结果中返回许多日期对象。包括给定的第一个和最后一个日期对象似乎正是我要搜索的。谢谢!
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() });
}