用javascript计算任意两个日期之间的工作日(去掉周六周日),不用while循环,而是用for循环

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用javascript计算任意两个日期之间的工作日(去掉周六周日),不用while循环,而是用for循环相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>6.计算工作日</title>
</head>
<body>

</body>
<script>
function getWeekday(first, last)
//计算工作日方法:遍历这两个日期区间的每一个日期,获取他的getDay()

//分别获取first和last的毫秒数(时间戳)
first = first.getTime();
last = last.getTime();

var count = 0;
while(first <= last)
//first在遍历过程中,就是两个日期区间中的每一个日期
//console.log(first);
//将first转换成日期对象
var d = new Date(first);
console.log(d);
if(d.getDay() >= 1 && d.getDay() <= 5)
count++;


first += 24*3600*1000;

return count;


//定义两个日期
var d1 = new Date(2016, 10, 1);
var d2 = new Date(2016, 11, 1);
//调用函数,传入这两个日期,得到工作日的天数
var r = getWeekday(d1, d2);
document.write("从2016-11-01至2016-12-01之间共有"+r+"个工作日");
</script>
</html>

这个是老师的代码,但是我想用for循环做出来,苦于无法给for循环的变量i定位,以及循环内部的变量定位,感谢帮忙回答!

参考技术A for(var i=first;i<=last,i+=24*3600*1000)
var d = new Date(i);
if(d.getDay() >= 1 && d.getDay() <= 5)
count++;

追问

首先感谢您的回答!
这个问题我想了大概快一天的时间了,尝试过各种方法,最后也逐渐整理好了思路,最后其实跟您给出的答案就差一步之遥,但是却怎么也想不到for循环的变量i要放在new Date(i);里面,我是把first放在里面了,主要是参考我们老师的做法,如上”var d = new Date(first);“这段代码,现在我明白在我们老师的while()循环里,first就相当于我的变量i。

本回答被提问者和网友采纳

以上是关于用javascript计算任意两个日期之间的工作日(去掉周六周日),不用while循环,而是用for循环的主要内容,如果未能解决你的问题,请参考以下文章

如何在Javascript中找到两个日期之间的给定天数? [复制]

用js怎么计算两个日期之间的时间差?

C++ 计算任意两个日期之间的天数

C/C++输入两个任意日期求相隔天数

用js计算本周日期

在javascript中计算两个日期时间之间的持续时间