javascript - 获取开始日期和结束日期之间的日期数组

标签 javascript date sharepoint-2013

我用 Javascript 编写的函数有问题。我正在尝试获取开始和结束之间的一系列日期。

功能:

function getDateArray(startDate, endDate) {

    var dateArray = new Array(),
    currentDate = new Date(startDate),
    lastDay = new Date(endDate);
    while (currentDate <= lastDay) {
        if (!(currentDate.getUTCDay() === 0 || currentDate.getUTCDay() === 6)) {
            //currentDate.toUTCString(); //This line is redundant
            dateArray.push(currentDate);
        }
        currentDate.setDate(currentDate.getDate() + 1);
    }
    return dateArray;
}

每当我使用两个日期调用此函数时,例如:

开始日期 = 10/6/2015 和结束日期 = 10/12/2015

我得到了不需要的结果:

Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)
Tue Oct 13 2015 00:00:00 GMT+0200 (South Africa Standard Time)

如果有人可以向我强调这里出了什么问题吗?

最佳答案

这是因为您每次都推送对 currentDate 的引用(由于日期是复杂类型,它们是通过引用传递的)

只需替换此:

dateArray.push(currentDate);

这样:

dateArray.push(new Date(currentDate));

关于javascript - 获取开始日期和结束日期之间的日期数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32969411/

相关文章:

javascript - JQuery 不适用于创建后的元素

javascript - 类型错误 .then() 不是 webpack 2 中的函数

java - 使用模式解析包含 GregorianCalendar 的字符串到日期

c# - Sharepoint.Utility 替换

javascript - 使用 Express.js 从变量发送 POST 响应

javascript - JavaScript 中 push 方法的 Polyfill

ios - 日历天条件

javascript - 在我的起始日期选择框中,我想显示当前 session 日期范围之间的日期范围

java - SharePoint 作为网络驱动器 - 使用 Java 以编程方式获取文档 ID

javascript - 如何阻止特定 Sharepoint 页面的身份验证