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 日を引いた値が 0 よりも大きいため、壊れているようには見えません)、habitic.com にアクセスして [実行中] をクリックしてください。

ご協力いただきありがとうございます!私は非常に混乱しています。これは、助けを求める必要があるほど私を困惑させた最初の問題です...

4

4 に答える 4

1

いいえ、now.setDate(now.getDate() - index)実際には正しいアプローチでした。ただし、新しい日は返されませんが、nowDate インスタンスの新しい [内部] タイムスタンプが返されます。2 つのステップにします。

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

これを活用してコンテキストに合わせるのはあなたに任せますが、今日(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 に答える
-1

これを使用してみてください:

day = 24*60*60*1000
new Date(now.getTime()-index * day);

now.getTime()エポック (1970 年 1 月 1 日午前 0 時 GMT) からのミリ秒数として時間を返します。 day = 24*60*60*10001 日のミリ秒数を計算します (24 時間、60 分/時間、60 秒/分、1000 ミリ秒/秒)。これに日数単位のオフセットを掛けると (index私が間違っていなければ )、ミリ秒単位のオフセットが得られます。getTime() からそれを引くと、目的の日付のエポックからのミリ秒数が得られます。これを Date() コンストラクターで使用して、その日時の実際の Date() オブジェクトを取得できます。

于 2012-10-23T22:18:02.630 に答える