[英]Date not changing with object.setDate()
我正在尝试创建具有星期,天和小时的日历对象,其中每天都有一个日期。 我将开始日期设置为2017年1月2日,但是循环完成后,日历中的所有日期的日期都为2018年1月2日。
var calendar = {};
var date = new Date(2017,0,2);
calendar['weeks'] = [];
for (var w = 0; w < 52; w++) {
calendar['weeks'][w] = {};
calendar['weeks'][w]['number'] = w+1;
calendar['weeks'][w]['days'] = [];
for (var d = 0; d < 7; d++) {
calendar['weeks'][w]['days'][d] = {};
calendar['weeks'][w]['days'][d]['date'] = date;
calendar['weeks'][w]['days'][d]['hours'] = [];
calendar['weeks'][w]['days'][d]['number'] = d+1;
for (var h = 0; h < 24; h++) {
calendar['weeks'][w]['days'][d]['hours'][h] = {};
calendar['weeks'][w]['days'][d]['hours'][h]['number'] = h+1;
}
date.setDate(date.getDate()+1);
}
}
您只有一个 date
对象。 当您在该循环中一遍又一遍地将其链接到calendar
对象时,每个引用都指向同一个对象。
您需要在每次迭代中创建新实例:
date = new Date(date);
date.setDate(date.getDate() + 1);
或者,在设置该“日期”属性时创建一个新实例:
calendar['weeks'][w]['days'][d]['date'] = new Date(date);
也可以这样写:
calendar.weeks[w].days[d].date = new Date(date);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.