在Javascript,getDate中存储前一周的日期数组

时间:2012-10-23 22:05:14

标签: javascript date getdate

我要做的是构建一个包含前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并点击“正在运行”。

感谢您的帮助!我非常困惑,这是第一个困扰我的问题,需要求助...

4 个答案:

答案 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)]