2016-08-23 90 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

相關問題