我有两个日期选择器,我可以从中计算天数,而无需计算星期六和星期日。但我想在周五和周六这样做。我尝试过一些不同的方法但失败了。对我来说,处理不包括周六和周日的天数很容易,但处理周五和周六的天数则不然 以下是我的 javascript 代码 -
$(function() {
$( "#startDate" ).datepicker({
onSelect: calculateDays});
});
$(function() {
$( "#endDate" ).datepicker({
onSelect: calculateDays});
});
function calculateDays(startDate, endDate) {
var form = this.form
var startDate = document.getElementById("startDate").value;
var startDate = new Date(startDate);
var endDate = document.getElementById("endDate").value;
var endDate = new Date(endDate);
startDate.setHours(0,0,0,1); // Start just after midnight
endDate.setHours(23,59,59,999); // End just before midnight
var oneDay = 24*60*60*1000;
var diff = endDate - startDate; // Milliseconds between datetime objects
var days = Math.ceil(diff / oneDay);
var weeks = Math.floor(days / 7);
var 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
if (days)
document.getElementById("result").innerHTML=days;
}
我的 HTML 是:
<form id="dateDifference" style="width:200px;">
<input name="startDate" id="startDate" value="" >
<input name="endDate" id="endDate" value="" >
</form>
<span id="result"></span>
最佳答案
// Count days from d0 to d1 inclusive, excluding Fridays and Saturdays
function calculateDays( d0, d1 )
{
var ndays = 1 + Math.round((d1.getTime()-d0.getTime())/(24*3600*1000));
var nsaturdays = Math.floor((ndays + d0.getDay()) / 7);
return ndays - 2*nsaturdays + (d0.getDay()==6) - (d1.getDay()==5);
}
其中 d0
和 d1
是开始和结束 Date
对象(具有相同的小时值)。
关于javascript - 使用 javascript 和 jQuery UI datepicker 获取工作日数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997637/