我的预定脚本设置了一个字段,用于存储发票逾期每天的应计滞纳金。我将当前的系统时间与截止日期进行比较,以计算出逾期的天数。但是,我没有考虑将周末排除在外。如何使用现有代码执行此操作?
var current_date = nlapiStringToDate(nlapiDateToString(new Date()));
var dd = invoice.getFieldValue('duedate');
var due_date = nlapiStringToDate(dd);
if (due_date < current_date) {
//Other Calculations
var days_overdue = DateOverdue(current_date, due_date);
}
function DateOverdue(current_date, due_date) {
var time_difference = Math.abs(due_date.getTime() - current_date.getTime());
var no_days_overdue_by = Math.ceil(time_difference / (1000 * 3600 * 24));
return no_days_overdue_by;
}
&#13;
答案 0 :(得分:1)
以下作品。请注意,额外的日期是清除比较时间戳而没有小时,分钟和秒的问题。鉴于如何生成它,current_date并不严格需要,但它会产生更一般的功能。
注意:我不相信你应该能够将日期与d1&lt; D2。
function daysOverdue(currentDate, dueDate){
var days = 0;
var due = new Date(dueDate.getFullYear(), dueDate.getMonth(), dueDate.getDate(), 0, 0, 0);
var fromTS = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 0, 0, 0).getTime();
if(due.getTime() >= fromTS) return 0; // not overdue
while(due.getTime() < fromTS){
if(due.getDay() !== 0 && due.getDay() != 6) days++;
due.setDate(due.getDate() + 1);
}
return days;
}