NetSuite - 从日期计算中排除周末

时间:2016-08-23 11:36:35

标签: javascript netsuite suitescript

我的预定脚本设置了一个字段,用于存储发票逾期每天的应计滞纳金。我将当前的系统时间与截止日期进行比较,以计算出逾期的天数。但是,我没有考虑将周末排除在外。如何使用现有代码执行此操作?



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;
&#13;
&#13;

1 个答案:

答案 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;
}