【发布时间】:2016-11-17 02:45:58
【问题描述】:
我有一个代码返回使用 jquery datapicker 选择的两个日期之间的天数。
我想为假期添加一个函数,它将排除数组中的所有假期; var 假期 [25-12-2016,26-12-2016,1-1-2017];
请在下面找到代码:
<script>
<!--Calculate Leave days excluding weekends
function calcBusinessDays(start, end) {
// This makes no effort to account for holidays
// Counts end day, does not count start day
// make copies we can normalize without changing passed in objects
var start = new Date(start);
var end = new Date(end);
// initial total
var totalBusinessDays = 0;
// normalize both start and end to beginning of the day
start.setHours(0,0,0,0);
end.setHours(0,0,0,0);
var current = new Date(start);
current.setDate(current.getDate() + 1);
var day;
// loop through each day, checking
while (current <= end) {
day = current.getDay();
if (day >= 1 && day <= 5) {
++totalBusinessDays;
}
current.setDate(current.getDate() + 1);
}
return totalBusinessDays;
}
$(function() {
$( "#start_date" ).datepicker({ minDate:0, showOn: 'button', buttonImageOnly: true, buttonImage: 'images/calendar.png', beforeShowDay: $.datepicker.noWeekends });
$( "#end_date" ).datepicker({ minDate:0, showOn: 'button', buttonImageOnly: true, buttonImage: 'images/calendar.png',beforeShowDay: $.datepicker.noWeekends,
onSelect: function (dateStr) {
var max = $(this).datepicker('getDate'); // Get selected date
$('#datepicker').datepicker('option', 'maxDate', max || '+1Y+12M'); // Set other max, default to +18 months
var start = $("#start_date").datepicker("getDate");
var end = $("#end_date").datepicker("getDate");
var days = (end - start) / (1000 * 60 * 60 * 24);
var diff = calcBusinessDays(start,end);
$("#leave_days").val(diff);
} });
});
</script>
<input name="start_date" type="text" id="start_date" />
<input name="end_date" type="text" id="end_date" />
<input name="leave_days" type="text" id="leave_days" size="32" class="form-control"/>
【问题讨论】:
-
您将不得不将所有假期添加到一个数组中,并在您的同时比较它们..
-
我同意@Naruto...确定这个数组也很有趣...一个很好的开始是here。某些假期被定义为(例如)“一个月的第一个星期一”,而不是固定日期。因此,必须每年对 aray 进行审查。祝你好运!
-
编辑我的第一条评论:在某个地方建立一个数据库会很好......你只需要记住两件事:定期假期(圣诞节或新年等......他们总是在 25/ 12 OR 01/01)和可变的(需要在旅途中添加......)
-
我的问题是你如何用函数做到这一点。我需要一个函数来从天数中扣除假期
标签: javascript php jquery calendar