我有两个约会。我想创建一个数组,其中包含它们之间的天数。
我成功完成了。这是代码。
代码:
var data = []; var start = new Date('2014-02-01'); var end = new Date('2014-02-28'); var timeDiff = Math.abs(end.getTime() - start.getTime()); var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
for ( var i = 0; i < diffDays; ++i ) {
var date = new Date(start)
date.setDate(start.getDate() + i)
var dd = date.getDate();
var mm = date.getMonth() + 1;
var yyyy = date.getFullYear();
formattedDate = mm + '/' + dd + '/' + yyyy
data.push(formattedDate)
}
我得到了阵列之间的天数。
但现在我看起来有点前进。
我想添加另一列。
假设我有以下日期。
['2014-02-05', '2014-02-10']
。我想添加另一个像date2这样的列,除了动态生成日期的行和上面两个日期匹配之外的所有行都有-
值。
有人请帮我动态创建两列数据。
预期产出:
{ "date": "2014-02-01", "date2": "-" }, { "date": "2014-02-02", "date2": "-" } { "date": "2014-02-03", "date2": "2014-02-03" } { "date": "2014-02-04", "date2": "-" } { "date": "2014-02-05", "date2": "2014-02-05" } { "date": "2014-02-06", "date2": "-" }
答案 0 :(得分:2)
您可以执行类似
的操作var data = [];
var start = new Date('2014-02-01');
var end = new Date('2014-02-28');
var dateFormat = d3.time.format('%Y-%m-%d');
var specialDates = ['2014-02-05', '2014-02-10'];
var newData = d3.time.day.range(start, end).map(
function(d){
var thisDateString = dateFormat(d);
if (specialDates.indexOf(thisDateString) < 0)
return {'date':thisDateString, 'date2':'-'}
else
return {'date':thisDateString, 'date2':thisDateString}
}
)
看看这个JSFiddle
我们正在使用d3.time.day.range(start, end)
为我们提供一系列日子。然后使用.map
创建一个新数组。 这个闪亮的新数组的值是什么?当传入我们定义的函数时,为原始数组中的每个项重新调整(所以我们想要的任何东西)。
答案 1 :(得分:0)
您可以使用d3
轻松创建日期数组d3.time.day.range(start, end)
您可以使用documentation中当前为
的任何时间间隔