我要做的是构建一个包含前7天日期的数组。下面的代码为我做了这个。但是,当(now.getDate() - index)小于1时,它不会将日期跳回上个月,它只会使值为负。
我尝试用(now.setDate(now.getDate() - index)替换它,希望修复它,但我似乎得到了UNIX时间,而且肯定不是正确的。
var bars = new Array();
var index = 0;
var NumFields = data.length - 2;
var now = new Date();
var date = new Array();
for(var i=0;i<NumFields;i++) {
$('.graph').append("<div class=\"bar\"></div>");
}
$('.graph > .bar').each(function() {
var currentData = data[index];
$(this).attr('value', currentData);
bars.push(currentData);
date.push(now.getDate() - index);
index++;
});
如果你想看到问题(请记住,它不会因为当前日期减去7天大于零而看起来不合适),然后转到habitic.com并点击“正在运行”。
感谢您的帮助!我非常困惑,这是第一个困扰我的问题,需要求助...
答案 0 :(得分:1)
不,now.setDate(now.getDate() - index)
实际上是正确的做法。然而,它并没有返回新的一天,而是返回now
Date实例的新[内部]时间戳。分两步:
now.setDate(now.getDate() - 1); // sets the date to the previous day each time
date.push(now.getDate());
答案 1 :(得分:0)
//设置日期优先,然后将Date对象的getDate值推送到数组中。
function pastweek(d){
var now= d || new Date(),
i= 6,
dates= [now.getDate()];
while(i--){
now.setDate(now.getDate()-1);
dates.push(now.getDate());
}
return dates.reverse();
}
/ *
pastweek(new Date(2012,9,5))
returned value: (Array)
29,30,1,2,3,4,5
* /
/ *
pastweek()
returned value: (Array)
17,18,19,20,21,22,23
* /
答案 2 :(得分:-1)
尝试使用:
day = 24*60*60*1000
new Date(now.getTime()-index * day);
now.getTime()
将时间作为自纪元(1970年1月1日格林尼治标准时间午夜)以来的毫秒数返回。 day = 24*60*60*1000
计算一天中的毫秒数(24小时,60分钟/小时,60秒/分钟,1000毫秒/秒)。乘以天数的偏移量(index
,如果我没有记错的话),你得到的偏移量以毫秒为单位。从getTime()中减去它,并获得自所需日期的纪元以来的毫秒数,然后您可以在Date()构造函数中使用它来获取该日期和时间的实际Date()对象。
答案 3 :(得分:-1)
我会留给你利用它来适应你的背景,但是今天假设今天(now
)是2012年1月3日的最后一周的日期:
var now = new Date(2012, 0, 3),
DAY_MS = 86400000, // 1 day in milliseconds
dates = [];
for (var i = 0; i < 7; i++) {
dates.push(new Date(now.getTime() - (i * DAY_MS)));
}
console.log(dates);
// outputs:
// [Tue Jan 03 2012 00:00:00 GMT-0800 (PST),
// Mon Jan 02 2012 00:00:00 GMT-0800 (PST),
// Sun Jan 01 2012 00:00:00 GMT-0800 (PST),
// Sat Dec 31 2011 00:00:00 GMT-0800 (PST),
// Fri Dec 30 2011 00:00:00 GMT-0800 (PST),
// Thu Dec 29 2011 00:00:00 GMT-0800 (PST),
// Wed Dec 28 2011 00:00:00 GMT-0800 (PST)]