1

我有奇怪的问题。我必须计算给定日期月份的总周数。

我的逻辑运行良好,它将返回正确的周数,但问题是我的原始日期在计算周期间也发生了变化。

我已将原始日期存储在其他变量中,并将其他变量传递给函数,但原始日期仍然在发生变化。 如何限制更改我的原始日期?

 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);
}

控制台日志: 在此处输入图像描述

HTML 代码

 <input type="button" value="Next Month" onclick="goNextMonth()" />
4

1 回答 1

2

转这条线...

var firstDay = new Date(date.setDate(1)).getDay();

...进入这个:

var dateClone = new Date(date);
dateClone.setDate(1);
var firstDay = dateClone.getDay();

问题是使用date.setDate(1)表达式更改原始日期对象(作为参数传递给此函数)。显然,这不是你想要的。

于 2013-06-14T07:00:57.777 回答