2016-11-10 4 views
0

これについて少し混乱しています。javascript配列の日付エラー

コードのこの作品は、うまく動作しますが、奇妙な行動を持っています。

var tmpcurdte = eval(dataSource[i].startDate); 
tmpcurdte.setDate(tmpcurdte.getDate() + 1); 

while (tmpcurdte < tmpenddte) { 
    console.log("block date: " + tmpcurdte); 
    blockdayarray[blockdayarray.length] = tmpcurdte; 
    console.log("blockdayarray: " + blockdayarray); 
    tmpcurdte.setDate(tmpcurdte.getDate() + 1); 
} 

出力

block date :Sat Nov 12 2016 00:00:00 GMT+0100 (CET) 
blockdayarray :**Sat Nov 12** 2016 00:00:00 GMT+0100 (CET) 
block date :Sat Dec 31 2016 00:00:00 GMT+0100 (CET) 
blockdayarray :**Sun Nov 13** 2016 00:00:00 GMT+0100 (CET),**Sat Dec 31** 2016 00:00:00 GMT+0100 (CET) 
block date :Sun Jan 01 2017 00:00:00 GMT+0100 (CET) 
blockdayarray :Sun Nov 13 2016 00:00:00 GMT+0100 (CET),**Sun Jan 01 2017** 00:00:00 GMT+0100 (CET),**Sun Jan 01 2017** 00:00:00 GMT+0100 (CET) 
block date :Sat Feb 04 2017 00:00:00 GMT+0100 (CET) 
blockdayarray :Sun Nov 13 2016 00:00:00 GMT+0100 (CET),Mon Jan 02 2017 00:00:00 GMT+0100 (CET),**Mon Jan 02 2017** 00:00:00 GMT+0100 (CET),Sat Feb 04 2017 00:00:00 GMT+0100 (CET) 

私は新しいものを押すと、あなたは、配列の変化の前の日付を見ることができるように。誰も助けて/これを説明することはできますか?

+0

なぜあなたは 'eval'のことをやっていますか? – ArsalanDotMe

+0

以下をお読みください。私のコードを探検する時間をとってください:-) – user3242509

答えて

1

同じ同じ オブジェクトを繰り返し押してその状態を変更しているからです。

代わりに、あなたは次の日のために新しいDateオブジェクトを作成します:

var tmpcurdte = eval(dataSource[i].startDate); 
tmpcurdte.setDate(tmpcurdte.getDate()+1); 

while (tmpcurdte < tmpenddte) { 
    console.log("block date :" + tmpcurdte); 
    blockdayarray[blockdayarray.length]=tmpcurdte; 
    console.log("blockdayarray :" + blockdayarray); 
    tmpcurdte = new Date(tmpcurdte.getTime());  // *** 
    tmpcurdte.setDate(tmpcurdte.getDate() + 1); 
} 

サイドノート:私はあなたがevalにその呼び出しでやっていることはかなりよく分からないがしかし、あなたがしていることが何であれ、それを行うためのより良い方法はほぼ確実です。

+0

優秀、あなたのソリューションは正常に動作します。 また、それは参考になったものですが、それを理解できませんでした。 evalはPHPの返された日付文字列を日付オブジェクトとして解析することです。
私はそれを後に変更しますが、今のところうまくいきます。この日付オブジェクトがウィジェットに必要です あなたの助けを借りて B – user3242509

+0

申し訳ありません、あなたに投票できませんでした。 – user3242509

関連する問題