如何在jquery中排除周末?
我选择了两个日期 起始日期:年月日 今日:年月日 所以我想要的功能应该排除周末,所以我尝试了这个如何在jquery中排除周末?,jquery,Jquery,我选择了两个日期 起始日期:年月日 今日:年月日 所以我想要的功能应该排除周末,所以我尝试了这个 function onblur(event){ GetDaysBetweenDates(); } function GetDaysBetweenDates(){ if(document.getElementById('datepicker3').value != ""){ var fromDate = new
function onblur(event){
GetDaysBetweenDates();
}
function GetDaysBetweenDates(){
if(document.getElementById('datepicker3').value != ""){
var fromDate = new Date(document.getElementById('datepicker2').value);
var toDate = new Date(document.getElementById('datepicker3').value);
var timeDiff = Math.abs(toDate.getTime() - fromDate.getTime());
var days = Math.ceil(timeDiff / (1000 * 3600 * 24));
if(days){
// Subtract two weekend days for every week in between
var weeks = Math.floor(days / 7);
days = days - (weeks * 2);
// Handle special cases
var startDay = fromDate.getDay();
var endDay = toDate.getDay();
// Remove weekend not previously removed.
if (startDay - endDay > 1)
days = days - 2;
// Remove start day if span starts on Sunday but ends before Saturday
if (startDay == 0 && endDay != 6)
days = days - 1;
// Remove end day if span ends on Saturday but starts after Sunday
if (endDay == 6 && startDay != 0)
days = days - 1;
}
$("#txtno_of_leaves").val(diffDays);
}
}
但是这个不行。试试这个
function workingDaysBetweenDates(startDate, endDate, getWorkingDays) {
startDate = new Date(startDate);
endDate = new Date(endDate);
// Validate input
if (endDate < startDate)
return 0;
// Calculate days between dates
var millisecondsPerDay = 86400 * 1000; // Day in milliseconds
startDate.setHours(0,0,0,1); // Start just after midnight
endDate.setHours(23,59,59,999); // End just before midnight
var diff = endDate - startDate; // Milliseconds between datetime objects
var days = Math.ceil(diff / millisecondsPerDay);
if(getWorkingDays){
// Subtract two weekend days for every week in between
var weeks = Math.floor(days / 7);
days = days - (weeks * 2);
// Handle special cases
var startDay = startDate.getDay();
var endDay = endDate.getDay();
// Remove weekend not previously removed.
if (startDay - endDay > 1)
days = days - 2;
// Remove start day if span starts on Sunday but ends before Saturday
if (startDay == 0 && endDay != 6)
days = days - 1;
// Remove end day if span ends on Saturday but starts after Sunday
if (endDay == 6 && startDay != 0)
days = days - 1;
}
return days;
}
workingDaysBetweenDates(start_date, end_date, true);
日期之间的函数工作日(开始日期、结束日期、获取工作日){
startDate=新日期(startDate);
endDate=新日期(endDate);
//验证输入
如果(结束日期<开始日期)
返回0;
//计算日期之间的天数
var millissecondsPerday=86400*1000;//以毫秒为单位的天
startDate.setHours(0,0,0,1);//午夜后开始
endDate.setHours(23,59,59999);//在午夜前结束
var diff=endDate-startDate;//日期时间对象之间的毫秒数
变量天数=数学单元(差/毫秒/日);
如果(getWorkingDays){
//中间每周减去两个周末
var周=数学下限(天/7);
天=天-(周*2);
//处理特殊情况
var startDay=startDate.getDay();
var endDay=endDate.getDay();
//删除以前未删除的内容。
如果(开始日期-结束日期>1)
天=天-2;
//如果跨度在周日开始,但在周六之前结束,则删除开始日
如果(开始日期==0&&endDay!=6)
天=天-1;
//如果跨度在周六结束,但在周日之后开始,则删除结束日
如果(endDay==6&&startDay!=0)
天=天-1;
}
返程天数;
}
日期之间的工作日(开始日期、结束日期、真);
这是工作小提琴:
日期格式需要是以下格式之一:
04/24/2014
或2014-04-24
@user3448105它解决了您的问题吗?让我知道,如果你面临任何问题,我已经更改了一些代码,以使我的方式无法工作。可以指出我的错误吗?检查days
变量在if(diffDays)
@user3448105中未定义,同时确保你有startDate.setHours(0,0,1)//午夜后开始
和endDate.setHours(23,59,59999);//在午夜前结束
语句,以获得确切的日差。让我们看看它是否对您有效?如果它对您有效,也请向上投票