我的逻辑工作正常,它将返回正确的周数,但问题是我的原始日期在计算周期间也发生了变化。
我已将原始日期存储在其他变量中并将其他变量传递给该函数,但原始日期仍然会发生变化。 如何限制更改原始日期?
var currentDate;
$(document).ready(function () {
currentDate = new Date();
});
function goNextMonth() {
var dt = currentDate;
console.log("Before Date: " + currentDate);
var weeks = getWeeksOfMonth(dt);
console.log("After Date: " + currentDate + ", Weeks: " + weeks);
}
function getWeeksOfMonth(date) {
var firstDay = new Date(date.setDate(1)).getDay();
var totalDays = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
return Math.ceil((firstDay + totalDays) / 7);
}
Cosole日志:
HTML代码
<input type="button" value="Next Month" onclick="goNextMonth()" />
答案 0 :(得分:2)
转这一行...
var firstDay = new Date(date.setDate(1)).getDay();
......进入这个:
var dateClone = new Date(date);
dateClone.setDate(1);
var firstDay = dateClone.getDay();
问题是使用date.setDate(1)
表达式更改原始日期对象(作为参数传递给此函数)。显然,这不是你想要的。