javascript - 查找日期范围内的工作日
问题描述
我正在尝试将日期推送到数组的某个范围内,但它仅推送最后一个日期 n 次,而不是所需的单个日期。
function getBusinessDatesCount(startDatetest, endDatetest) {
var curDate = startDatetest;
var weekdays = [];
while (curDate <= endDatetest) {
var dayOfWeek = curDate.getDay();
if (!((dayOfWeek === 6) || (dayOfWeek === 0))) {
weekdays.push(curDate);
}
curDate.setDate(curDate.getDate() + 1);
}
console.log(weekdays);
}
var startDatetest = new Date('05/03/2016');
var endDatetest = new Date('05/10/2016');
var numOfDates = getBusinessDatesCount(startDatetest, endDatetest);
解决方案
date
你目前在内存中只有两个对象,startDatetest
和 endDatetest
- 变化curDate
会改变startDatetest
,因为对象变量本质上是引用Javascript 中的内存位置。(创建一个引用该对象的新变量,例如curDate = startDatetest
,不会克隆该对象,它只会将该引用复制到该对象在内存中的位置)。您需要克隆该date
对象:
function getBusinessDatesCount(startDatetest, endDatetest) {
var curDate = startDatetest;
var weekdays = [];
while (curDate <= endDatetest) {
var dayOfWeek = curDate.getDay();
if (!((dayOfWeek === 6) || (dayOfWeek === 0))) {
weekdays.push(new Date(curDate.getTime()));
}
curDate.setDate(curDate.getDate() + 1);
}
console.log(weekdays);
}
var startDatetest = new Date('05/03/2016');
var endDatetest = new Date('05/10/2016');
var numOfDates = getBusinessDatesCount(startDatetest, endDatetest);
推荐阅读
- keras - 如何管理活动轮廓损失的多标签分割图?
- azure - 用于管理 Azure 资源的 Azure PIM
- jsp - 如何使用jsp页面隐藏url中的传递参数
- java - SpringBoot - 使用 fly-saucer-pdf 结果生成 pdf 到空文件中
- django - 如何针对具有 id 的对象创建对象
- java - 引起:java.lang.RuntimeException: Parcelable 遇到 IOException 读取 Serializable 对象
- ios - 是否有一个 swift 库可以让您自定义 JSON 中键的顺序?
- javascript - 如何从 curl -T --upload-data 选项中获取等效的数据格式在浏览器中使用 JavaScript?
- .net - OSX 上的 Cake 因“错误:程序集名称无效”而失败
- protractor - 量角器:元素不可交互