javascript - 如何计算两个选定日历日期之间的总天数

标签 javascript date sharepoint sharepoint-designer

假设我有 startDate = 7/16/2015 和 endDate = 7/20/2015。这 2 个日期存储在 SharePoint 列表中。

如果用户选择与 SharePoint 列表中的日期完全相同的日期,它可以计算总天数 = 2 ,这意味着不计算其他天数。

有人可以帮忙吗?

我使用下面的代码来计算差异的总天数,不计算周末。但是我无法弄清楚如何在不计算其他日期的情况下计算所选日期的总天数。

function workingDaysBetweenDates(startDate,endDate) {

// Validate input
if (endDate < startDate)
    return 'Invalid !';

// 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);

// Subtract two weekend days for every week in between
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;

return days;

}

最佳答案

下面的函数计算两个日期之间的工作日数

function getBusinessDatesCount(startDate, endDate) {
    var count = 0;
    var curDate = startDate;
    while (curDate <= endDate) {
        var dayOfWeek = curDate.getDay();
        if(!((dayOfWeek == 6) || (dayOfWeek == 0)))
           count++;
        curDate.setDate(curDate.getDate() + 1);
    }
    return count;
}


//Usage

var startDate = new Date('7/16/2015');
var endDate = new Date('7/20/2015');
var numOfDates = getBusinessDatesCount(startDate,endDate);
$('div#result').text(numOfDates);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="result"/>

关于javascript - 如何计算两个选定日历日期之间的总天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29933608/

相关文章:

javascript - 这是在对象内部构造对象的糟糕方法吗?

javascript - 分辨率改变物体的位置

java 日历添加不起作用

javascript - 如何使用从 API 获取的图像在 div 上生成动态轮播

javascript - Redux.js 和数据有关系

javascript - 在 Android 上动态更改 HTML5 视频 src?

mysql - 在mysql中查找开始日期和结束日期之间的日期

java - Jackson 读取 JSON 并转换为 Map<String,Object>

sharepoint - 什么时候 SPFile.Properties != 到 SPFile.Item.Properties 在 SharePoint 中?

sharepoint - 在 SharePoint 中使用 InfoPath 表单有哪些好处?