0

我要做的是构建一个包含前 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

4 回答 4

1

不,now.setDate(now.getDate() - index)实际上是正确的方法。然而,它不会返回新的一天,而是返回nowDate 实例的新 [内部] 时间戳。做两步:

now.setDate(now.getDate() - 1); // sets the date to the previous day each time
date.push(now.getDate());
于 2012-10-23T22:19:17.617 回答
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

*/

于 2012-10-23T22:34:29.067 回答
-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() 对象。

于 2012-10-23T22:18:02.630 回答
-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)]
于 2012-10-23T22:35:47.433 回答