javascript - 根据日期选择器选择计算新日期
问题描述
我有一个 jQuery Datepicker 和一个下拉选择器,其中国家代表需要添加到用户选择日期的额外天数。
我需要一个显示结果日期的输出。计算需要排除周末和银行假期,就像日期选择器所做的那样。
// holidays
var natDays = [
[1, 1, 'uk'],
[12, 25, 'uk'],
[12, 26, 'uk']
];
var dateMin = new Date();
var weekDays = AddBusinessDays(0);
dateMin.setDate(dateMin.getDate() + weekDays);
function AddBusinessDays(weekDaysToAdd) {
var curdate = new Date();
var realDaysToAdd = 0;
while (weekDaysToAdd > 0) {
curdate.setDate(curdate.getDate() + 1);
realDaysToAdd++;
//check if current day is business day
if (noWeekendsOrHolidays(curdate)[0]) {
weekDaysToAdd--;
}
}
return realDaysToAdd;
}
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
if (noWeekend[0]) {
return nationalDays(date);
} else {
return noWeekend;
}
}
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1 && date.getDate() == natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
return [true, ''];
}
$('#datepicker').datepicker({
inline: true,
beforeShowDay: noWeekendsOrHolidays,
altField: '#txtCollectionDate',
showOn: "both",
dateFormat: "dd/mm/yy",
firstDay: 1,
changeFirstDay: false,
minDate: dateMin
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css" />
<select id="weeks-select">
<option value="10">UK</option>
<option value="20">Overseas</option>
<option value="30">India</option>
</select>
<input type="text" id="datepicker" />
解决方案
推荐阅读
- python - 由于 window-build-tools 从命令行运行脚本的 Python 错误
- google-apps-script - Google Apps 脚本 - 格式化特定工作表中的列
- amazon-web-services - 有什么方法可以通过 AWS 上的配置来限制 s3 存储桶的大小
- javascript - Firebase Chrome 扩展安全通过 SSR
- c - C语言中“%c”和“%s”的区别
- node.js - 每次变量更改 DISOCRD.JS 时,Nodejs 都会更改机器人的昵称
- ms-access - 在 Access 中检查大型链接数据库
- python - 如何配置 pytesseract 以支持 Windows 10 中非英语语言的文本检测?
- python - numpy unique() 返回 '<' 在 float / str 实例之间不支持错误 - 为什么?
- c++ - 如何彼此相邻打印倒置的半星金字塔图案?