用于循环行为的 Javascript 每次迭代输出相同的结果

Javascript for loop behaviour outputting the same result each iteration

本文关键字:输出 迭代 结果 循环 Javascript 用于      更新时间:2023-09-26

我承认我有点像JS新手,来自PHP背景,我对范围的概念显然与Javascript不同。

// There's a date set, so begin processing
var original_date       = new Date($('input#tour_encoded_dates').val());
var date_search_string  = ''; 
var day_limit           = 14;
var timestamp           = '';
// Go forwards day_limit days
for(var i = 0; i < day_limit; i++) {
    timestamp = strtotime('+'+i+' days', original_date);
    calculated_date = new Date(timestamp).format('Y-m-d');
    date_search_string += calculated_date + ' ';
}
console.log(date_search_string);

console.log()的输出为:

2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10 2013-10-10

我本来希望每次迭代都会将日期增加一天,但它们保持不变。

作为参考,如果我将循环的最后一行更改为date_search_string += timestamp + ' ';则输出如下:

1381363200000 1381363286400 1381363372800 1381363459200 1381363545600 1381363632000 1381363718400 1381363804800 1381363891200 1381363977600 1381364064000 1381364150400 1381364236800 1381364323200

所以问题显然出在calculated_date变量上——对吧?

有人可以解释正确的方法吗?谢谢。

每个时间戳之间有 86400(即 1/1000 天(。

您正在计算(以strtotime为单位(,就好像时间戳是秒,但它们是毫秒。