2016-08-23 112 views
0

我的预定脚本设置了一个字段,用于存储每天发票逾期应计的滞纳金费用。我将当前系统时间与到期日进行比较,以计算逾期天数。但是,我没有考虑排除周末。我怎样才能使用我现有的代码来做到这一点?NetSuite - 不包括计算日期的周末

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

回答

1

以下的作品。请注意,额外的日期是通过比较没有小时,分钟和秒钟的时间戳来清除问题。 current_date并不是严格需要的,因为它给出了如何生成它,但它使得更一般的函数。

注意:我不相信你应该能够与d1 < 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; 
} 
+0

谢谢你 - 今天我会试试! – MG2016

+0

不客气。另外,只要您使用任何ES5或更高版本的JavaScript引擎,则表达式d1 bknights

相关问题