How to get result in number when getting the difference of 2 date and time field.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2023 01:09 AM
I have to trigger one notification if 5 days are completed to creation of approval record in sysapproval_approver table.
However as per the code i have written below its getting value in variable "elapsedTime" as date time both like
124 23:00:00, howevver we need it as date only.
var elapsedTime = 0;
var currentTimeNow = new GlideDateTime();
var gr = new GlideRecord('sysapproval_approver');
gr.addQuery('state', '=', 'requested');
gr.query();
while (gr.next()) {
var createdOn = new GlideDateTime(gr.sys_created_on);
elapsedTime = gs.dateDiff(createdOn.getLocalDate(), currentTimeNow.getLocalDate());
if (elapsedTime == 5) { //if more than 5 day has passed...
gs.eventQueue('2nd_reminder_for_Stockade', gr, gs.getUserID()); //fire this event
}
if (elapsedTime == 10) {
gs.eventQueue('3rd_reminder_for_Stockade', gr, gs.getUserID());
}
gr.update();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2023 01:15 AM
Hi @VIKAS MISHRA ,
You can use the getNumericValue() method on a GlideDuration object to get the elapsed time in seconds. Then, divide the result by the number of seconds in a day (86400) to get the elapsed time in days.
Here's an updated version of your code that should return the elapsed time in days:
var elapsedTime = 0;
var currentTimeNow = new GlideDateTime();
var gr = new GlideRecord('sysapproval_approver');
gr.addQuery('state', '=', 'requested');
gr.query();
while (gr.next()) {
var createdOn = new GlideDateTime(gr.sys_created_on);
var diff = new GlideDuration(currentTimeNow.getNumericValue() - createdOn.getNumericValue());
elapsedTime = Math.floor(diff.getNumericValue() / 86400);
if (elapsedTime == 5) {
gs.eventQueue('2nd_reminder_for_Stockade', gr, gs.getUserID());
}
if (elapsedTime == 10) {
gs.eventQueue('3rd_reminder_for_Stockade', gr, gs.getUserID());
}
gr.update();
}
If my response was helpful in resolving the issue, please consider accepting it as a solution by clicking on the ✅Accept solution button and giving it a thumbs up 👍. This will benefit others who may have a similar question in the future.
Thank you!
Ratnakar
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2023 01:42 AM
This time its giving me he answer in number but the number is so huge i do not know why, please see the screenshot below, i have done it for 26 days instaed of 5 just for testing only, like "elepseTime == 26
Then i was printing elespTime with gs.log('testing 61 '+ elsepseTime)