- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-15-2024 07:00 AM
Hi Community 😊
var CutOffTimeGeneration = Class.create();
CutOffTimeGeneration.prototype = Object.extendsObject(AbstractAjaxProcessor, {
calculateCutOffTime: function() {
var gtime1 = new GlideDateTime();
gs.info("gtime1 : " + gtime1);
var cutOffTime;
var timeGapString;
var timeGap;
var priority;
var sysId = this.getParameter('sysparm_sysId');
gs.info("sysId from the ticket : "+sysId);
var caseGR = new GlideRecord('sn_csm_case');
if (caseGR.get(sysId)) {
priority = caseGR.getValue('priority');
gs.info("Priority : "+priority);
}
var mapping = gs.getProperty('sn_customerservice.priorityToTimeMapping');
var priorityToTimeMap = JSON.parse(mapping);
timeGapString = priorityToTimeMap[priority];
timeGap = parseInt(timeGapString, 10);
gs.info("TimeGap : "+timeGap);
// Adding the relevant time gap to the current time
gtime1.addSeconds(timeGap * 60);
var currentTime = gtime1.getDisplayValue();
gs.info("cutofftime before rounding off : " + currentTime);
var dateParts = currentTime.split(" ");
var timeParts = dateParts[1].split(":");
gs.info("timeParts[1] : " + timeParts[1]);
var minutes = parseInt(timeParts[1]);
gs.info("minutes : " + minutes);
var flag = false;
// Round-up to the nearest 15 minutes
var remainder = minutes % 15;
gs.info("remainder : " + remainder);
if (remainder !== 0) {
minutes += (15 - remainder);
// Handle overflow
if (minutes >= 60) {
flag = true;
gtime1.addSeconds(60*60);
}
}
currentTime = gtime1.getDisplayValue();
dateParts = currentTime.split(" ");
timeParts = dateParts[1].split(":");
// Format the time for displaying purposes
var roundedTime = timeParts[0] + ':' + (flag ? '00' : minutes) + ':00';
var roundedDateTime = dateParts[0] + ' ' + roundedTime;
gs.info(roundedDateTime);
return roundedDateTime;
},
type: 'CutOffTimeGeneration'
});
The above Script Include contains my implementation, but the entire calculation slows down the process. I want to know if there are any built-in methods or more efficient ways to achieve this.
Thanks in advance 💕
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-15-2024 08:03 AM
Hello @SandaminiM
Please try the below script:
var gdt = new GlideDateTime(); // Current Date and Time
var milliseconds = gdt.getNumericValue(); // Get time in milliseconds
var fifteenMinutes = 15 * 60 * 1000;
// Use Math.ceil, Math.floor, or Math.round based on your requirement
// Uncomment the desired rounding logic:
// Round UP to the nearest 15 minutes
var roundedMilliseconds = Math.ceil(milliseconds / fifteenMinutes) * fifteenMinutes;
// Round DOWN to the nearest 15 minutes
// var roundedMilliseconds = Math.floor(milliseconds / fifteenMinutes) * fifteenMinutes;
// Round to the NEAREST 15 minutes
// var roundedMilliseconds = Math.round(milliseconds / fifteenMinutes) * fifteenMinutes;
// Set the rounded value back to a GlideDateTime object
gdt.setNumericValue(roundedMilliseconds);
// Print the result
gs.print("Rounded time: " + gdt.getDisplayValue());
"If you found my answer helpful, please give it a like and mark it as the "accepted solution". It helps others find the solution more easily and supports the community!"
Thank You
Juhi Poddar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-15-2024 08:03 AM
Hello @SandaminiM
Please try the below script:
var gdt = new GlideDateTime(); // Current Date and Time
var milliseconds = gdt.getNumericValue(); // Get time in milliseconds
var fifteenMinutes = 15 * 60 * 1000;
// Use Math.ceil, Math.floor, or Math.round based on your requirement
// Uncomment the desired rounding logic:
// Round UP to the nearest 15 minutes
var roundedMilliseconds = Math.ceil(milliseconds / fifteenMinutes) * fifteenMinutes;
// Round DOWN to the nearest 15 minutes
// var roundedMilliseconds = Math.floor(milliseconds / fifteenMinutes) * fifteenMinutes;
// Round to the NEAREST 15 minutes
// var roundedMilliseconds = Math.round(milliseconds / fifteenMinutes) * fifteenMinutes;
// Set the rounded value back to a GlideDateTime object
gdt.setNumericValue(roundedMilliseconds);
// Print the result
gs.print("Rounded time: " + gdt.getDisplayValue());
"If you found my answer helpful, please give it a like and mark it as the "accepted solution". It helps others find the solution more easily and supports the community!"
Thank You
Juhi Poddar