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

chidanandadhath
Kilo Guru

I have not used time zone, just sys_id of the schedule

 


var start = new GlideDateTime('2019-04-01');
var end = new GlideDateTime('2019-04-30');


var dc = new DurationCalculator();
dc.setSchedule('08fcd0830a0a0b2600079f56b1adb9ae'); // Schedule sys_id 
var dur = dc.calcScheduleDuration(start, end);
var business_days = dur/(60*60*9); // Update the total hours of a day based on shedule

gs.info(business_days);

chidanandadhath
Kilo Guru

all months are showing 1 day less

chidanandadhath
Kilo Guru

For May2019 it should be 23 , where as its giving 22

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;

But for march I'm getting the correct value