Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

getting number of working days between start date and end date

chidanandadhath
Kilo Guru

I want to get number of working days between start date and end date in a business rule.

1 ACCEPTED SOLUTION

add +1 to business_days. That should solve the issue

 

Use the below logic to add 1

var dc = new DurationCalculator();
		dc.setSchedule('eb65c2250fc76340e1f30dbce1050ee2', 'Los Angeles'); // Schedule sys_id and system time zone
		var dur = dc.calcScheduleDuration(start, end);
		
		var business_days = dur/(60*60*9); // Update the t
var gdt = new GlideDateTime(end);
var day_of_month = gdt.getDayOfWeekUTC();

if(day_of_month < 6)
business_days += 1;

View solution in original post

20 REPLIES 20

Akhil Vinay Ma1
Kilo Guru

Use date difference script for that two date fields

Akhil Vinay Ma1
Kilo Guru

Try below script:

Script Include:


var calculatedates = Class.create();
calculatedates.prototype = Object.extendsObject(AbstractAjaxProcessor, {
	
	datediff1:function(){
		var ld=this.getParameter('sysparm_lsd');
		var ed=this.getParameter('sysparm_led');
		var id=gs.dateDiff(ld,ed,false);
		return id;
	},
	
	type: 'calculatedates'
});


Client Script:


function onChange(control, oldValue, newValue, isLoading, isTemplate) {
	if (isLoading || newValue === '') {
		return;
	}
	
	//Type appropriate comment here, and begin script below
	var lsd=g_form.getValue('u_leave_start_date');
	var led=g_form.getValue('u_leave_end_date');
	var dt= new GlideAjax('calculatedates');
	dt.addParam('sysparm_name','datediff1');
	dt.addParam('sysparm_lsd',lsd);
	dt.addParam('sysparm_led',led);
	dt.getXML(ct);
	
	function ct(response) {		
		var answer = response.responseXML.documentElement.getAttribute("answer");
		g_form.setValue('u_total_days',answer);
	}
}

 

chidanandadhath
Kilo Guru

I want weekdays(working days)

Use  Glideschedule