How to get result in number when getting the difference of 2 date and time field.

VIKAS MISHRA
Tera Contributor

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();
    }
2 REPLIES 2

Ratnakar7
Mega Sage
Mega Sage

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

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)

 

VIKASMISHRA_0-1679992945987.png