如何在java脚本中确定星期六和星期日之间的数字
How to determine number Saturdays and Sundays comes between two dates in java script
我有如下要求我有两次约会,我需要弄清楚周六和周日之间的时间。
日期:2011年6月2日
日期:2011年7月2日
10天为周末
谢谢Srini
O(1)无环路解决方案:
function countWeekendDays( d0, d1 )
{
var ndays = 1 + Math.round((d1.getTime()-d0.getTime())/(24*3600*1000));
var nsaturdays = Math.floor( (d0.getDay()+ndays) / 7 );
return 2*nsaturdays + (d0.getDay()==0) - (d1.getDay()==6);
}
jsFiddle
编辑为计算周末天数,而不是周末数量。http://jsfiddle.net/bRgUq/3/
function CalculateWeekendDays(fromDate, toDate){
var weekendDayCount = 0;
while(fromDate < toDate){
fromDate.setDate(fromDate.getDate() + 1);
if(fromDate.getDay() === 0 || fromDate.getDay() == 6){
++weekendDayCount ;
}
}
return weekendDayCount ;
}
console.log(CalculateWeekendDays(new Date(2011, 6, 2), new Date(2011, 7, 2)));
根据您的日期,它们不是美国格式的(至少如果它们之间有10个周末)。你可以用美国格式的东西,比如…
var chunks = str.split('/');
str = [chunks[1], chunks[0], chunks[2]].join('/');
此代码在日期之间的每一天循环,如果日期是周六或周日,则递增计数器。
var start = new Date('06/02/2011'),
finish = new Date('07/02/2011'),
dayMilliseconds = 1000 * 60 * 60 * 24;
var weekendDays = 0;
while (start <= finish) {
var day = start.getDay()
if (day == 0 || day == 6) {
weekendDays++;
}
start = new Date(+start + dayMilliseconds);
}
jsFiddle。
冲击力:http://jsfiddle.net/mplungjan/vwNfU/
<script>
var aDay = 24*60*60*1000;
function getWeekend(dString1,dString2) {
var d1 = new Date(Date.parse(dString1)); //"MM/DD/YYYY"
var d2 = new Date(Date.parse(dString2));
var weekend = {
Sat:0,
Sun:0
}
for (var d,i=d1.getTime(), n=d2.getTime();i<=n;i+=aDay) {
d=new Date(i).getDay();
document.write("<br>"+new Date(i)+":"+d);
if (d===6) weekend.Sat++;
if (d===0) weekend.Sun++;
}
return weekend;
}
var satsun = getWeekend("06/02/2011","07/02/2011")
document.write("<br>Sat:"+satsun.Sat+"'nSun:"+satsun.Sun)
</script>
我会胡乱猜测一下,OP可能是指2011年7月2日至2011年8月2日之间的时间间隔,在这种情况下,实际上是10个周末,确切地说是:02:06、03:06、09:06、10:06、16:06、17:06、23:06、24:06、30:06、31:06。
计算方法,无需循环:
function weekendsBetween(start, end) {
"use strict";
var startDay = start.getDay(),
diff = (end.getTime() - start.getTime() - startDay) / (60000 * 60 * 24),
diffWeaks = (diff / 7) | 0,
remWeaks = Math.ceil(diff % 7), extra = 0;
if (startDay + remWeaks > 7) extra = 2;
else if (startDay + remWeaks == 7 ||
remWeaks > startDay) extra = 1;
return diffWeaks * 2 + extra;
}
var date1 = new Date(2011, 6, 2);
var date2 = new Date(2011, 7, 2);
weekendsBetween(date1, date2);
请注意,如果您在服务器设置(例如Node.js)中使用该函数,则该函数可能不会按您的预期运行,因为如果您不指定UTC时区,它可能会被翻译成您的本地时间,并在某一天内停止,这可能会导致不正确的结果。
相关文章:
- 如何定义星期日和平日.按日期使用开关
- 我怎么知道日期是否是星期六
- 转换“;2012年7月15日星期日00:00:00 GMT+0700(东南亚标准时间)“;到php/javascript
- 如何在 Jquery UI 日期选择器中禁用除星期三和星期日日期之外的所有日期
- 如何在我的日期选择器上只允许选择星期日
- 我想在 JavaScript 中使用日期函数将日期获取为 9 月 8 日星期日上午 11:46
- 第一个和第三个星期六禁用完整日历
- 计算一周中从星期一到星期六的天数
- 对工作日的对象进行排序,如周日、周一、..,星期六
- 使用JavaScript从互联网而非本地系统获取准确的星期日名称和时间
- jquery脚本来填充选择列表/下拉列表(如果是星期六、星期一或星期三)
- 在javascript中显示未来5天(星期日除外)
- 我如何得到这个的JavaScript日期版本:“2016年11月5日星期六”
- 获取当前周的开始日期和结束日期(周从星期一开始,以星期日结束)
- 在jQuery UI datepicker中禁用假日、星期日和过去的日期
- 星期六只在.js Datepicker
- 有没有一种方法可以让我得到(十月的第一个星期日-四月的第一个星期日)的时刻
- fullcalendar -不要在星期日显示任何事件
- 如何在java脚本中确定星期六和星期日之间的数字
- 在日期中添加天数时,如何检查它是星期六还是星期日