javascript - 选中复选框后计算两个日期之间的天数
问题描述
我正在使用下面的代码,如果cb1
选中,它将计算总天数。
如果cb1
未选中(默认状态),周末将被排除。
我的第一个问题是,一旦选中,它在计算中显示的时间减少了一天cb1
,第二个问题是,当cb1
未选中时,它没有显示任何结果。
任何帮助,请。我从这个线程中得到了参考。
(function () {
if (getField("cb1").value != "Off") {
var Start = this.getField("LeaveFrom").value;
var End = this.getField("LeaveEnd").value;
var dStart = util.scand("dd/mm/yyyy H:MM:SS", Start + " 0:00:00");
var dEnd = util.scand("dd/mm/yyyy H:MM:SS", End + " 0:00:00");
var diff = dEnd.getTime() - dStart.getTime();
var oneDay = 24 * 60 * 60 * 1000;
var days = Math.floor(diff/oneDay);
event.value = days;
} else {
var start = this.getField("LeaveFrom").value; // get the start date value
var end = this.getField("LeaveEnd").value; // get the end date value
var start =util.scand("dd/mm/yyyy H:MM:SS", start + " 0:00:00");
var end = util.scand("dd/mm/yyyy H:MM:SS", end + " 0:00:00");
event.value = dateDifference(start, end);
function dateDifference(start, end) {
if (end < start) return -1;
// Copy date objects so don't modify originals
var s = new Date(+start);
var e = new Date(+end);
// Get the difference in whole days
var totalDays = Math.round((e - s) / 8.64e7);
// Get the difference in whole weeks
var wholeWeeks = totalDays / 7 | 0;
// Estimate business days as number of whole weeks * 5
var days = wholeWeeks * 5;
// If not even number of weeks, calc remaining weekend days
if (totalDays % 7) {
s.setDate(s.getDate() + wholeWeeks * 7);
while (s < e) {
s.setDate(s.getDate() + 1);
// If day isn't a Friday or Saturday, add to business days
if (s.getDay() != 5 && s.getDay() != 6) {
++days;
}
}
}
return days;
}
}
})();
解决方案
推荐阅读
- php - 在codeigniter php中将表的计数设为零
- google-cloud-platform - 通过 Gitlab CI 将图像推送到 GCR 时,服务帐户没有 storage.buckets.lists 对项目的访问权限
- c - FLT_MAX 宏在哪里定义?
- php - 修复不正确的用户角色输出
- mule - 将 Cookie 设置为 Mule HTTP 请求
- java - 如何在 SQL 中使用可选的 WHERE 子句?
- java - 从 Android 中的 Url 获取图像
- c# - 访问 UIAlertView 的 ViewController
- python - Pyspark 安装错误:没有名为“pyspark”的模块
- json - CloudFormation - 如何使用 Sub 内在函数?