Help to calculate the difference between two fields in minutes

Thrupthi
Tera Expert

I have a two fields on my table which are of date/time type; I have start date and end date, inorder to calculate the difference i have created a new field of type duration

Business rule is been for this it returns a value in "days:hours:minutes"seconds"

Instead i just want the field to calculate the value in minutes; can someone please help me with this

Business rule:

(function executeRule(current, previous /*null when async*/) {

if (current.u_incident_start_date.nil() || current.u_incident_end.nil()) {
current.setValue('u_incident_duration_calculation', '');
return;
}

var st = new GlideDateTime();


st.setValue(current.getValue("u_incident_start_date"));

var ed = new GlideDateTime();
ed.setValue(current.getValue("u_incident_end"));

var dur = GlideDateTime.subtract(st, ed);
current.setValue("u_incident_duration_calculation", dur.getValue());

})(current, previous);




1 ACCEPTED SOLUTION

That could be the issue. If you donot want decimals , try the updated code

(function executeRule(current, previous /*null when async*/) {
	
	if (current.u_incident_start_date.nil() || current.u_incident_end.nil()) {
		current.setValue('u_incident_duration_calculation', '');
		return;
	}
	
	var st = new GlideDateTime(current.u_incident_start_date);
	var ed = new GlideDateTime(current.u_incident_end);
	
	var sec = gs.dateDiff(st, ed, true);
	
	var minutes = sec/60;
	
	current.u_incident_duration_calculation = parseInt(minutes,10); // Remove decimals 

	
})(current, previous);

View solution in original post

15 REPLIES 15

That could be the issue. If you donot want decimals , try the updated code

(function executeRule(current, previous /*null when async*/) {
	
	if (current.u_incident_start_date.nil() || current.u_incident_end.nil()) {
		current.setValue('u_incident_duration_calculation', '');
		return;
	}
	
	var st = new GlideDateTime(current.u_incident_start_date);
	var ed = new GlideDateTime(current.u_incident_end);
	
	var sec = gs.dateDiff(st, ed, true);
	
	var minutes = sec/60;
	
	current.u_incident_duration_calculation = parseInt(minutes,10); // Remove decimals 

	
})(current, previous);

Thank you so much for your help..

Prateek kumar
Mega Sage

Can you try something like this.

 var gd = gs.dateDiff(gr.getDisplayValue('u_incident_end'), gr.getDisplayValue('u_incident_start_date'), true); // gd will in seconds

var min = gd/1440; //Do you calculation, 


Please mark my response as correct and helpful if it helped solved your question.
-Thanks

Hi Prateek,

 

I did something like this but it displays some wrong calculations, can you please help with above script

is u_incident_end and u_incident_start_date are date fields???


Please mark my response as correct and helpful if it helped solved your question.
-Thanks