diff --git a/Core ServiceNow APIs/GlideDateTime/Calculate Due date using user defined schedules/README.md b/Core ServiceNow APIs/GlideDateTime/Calculate Due date using user defined schedules/README.md new file mode 100644 index 0000000000..bd51a663e2 --- /dev/null +++ b/Core ServiceNow APIs/GlideDateTime/Calculate Due date using user defined schedules/README.md @@ -0,0 +1,16 @@ +**Description:** +This Script Include calculates a future due date by adding a specified number of business days to a given start date, based on a defined schedule. +This can be used anywhere within the server side scripts like fix scripts, background scripts, UI Action (server script). + +**Pre-requisite:** +A schedule record with valid schedule entries should be created in the cmn_schedule table +A business hours value per day need to be configured +In this sample, the business hours per day is configured as 8 hours i.e 9AM - 5PM. + +**Sample:** +var daysToAdd = 4; // No of days need to be added +var script = new CaclculateDueDate().calculateDueDate(new GlideDateTime(),daysToAdd); // Passing the current date and daysToAdd value to script include +gs.print(script); + +**Output:** +*** Script: 2025-10-13 13:56:07 diff --git a/Core ServiceNow APIs/GlideDateTime/Calculate Due date using user defined schedules/script.js b/Core ServiceNow APIs/GlideDateTime/Calculate Due date using user defined schedules/script.js new file mode 100644 index 0000000000..eaa08bebec --- /dev/null +++ b/Core ServiceNow APIs/GlideDateTime/Calculate Due date using user defined schedules/script.js @@ -0,0 +1,20 @@ +var CaclculateDueDate = Class.create(); +CaclculateDueDate.prototype = { + initialize: function() {}, + + calculateDueDate: function(date, days_to_add) { + var business_hour_per_day = 8; // This can be stored in the system property (Value in Hours) and reused + var duration_script = new DurationCalculator(); // OOB Script include + var tz = gs.getSysTimeZone(); // Get the system timezone + + duration_script.setSchedule('c798c1dfc3907e1091ea5242b40131c8', tz); // Sys id of the schedule + duration_script.setStartDateTime(new GlideDateTime(date)); + var total_duration = days_to_add * (business_hour_per_day * 60 * 60); // Converting the days to seconds + duration_script.calcDuration(total_duration); + + var calculated_due_date = duration_script.getEndDateTime(); + return calculated_due_date.getDisplayValue(); + }, + + type: 'CaclculateDueDate' +};