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

Добро пожаловать. Кроме того, пока вы работаете с любым механизмом Javascript с ES5 или более поздней версией, выражение d1 bknights

Смежные вопросы