How to set Calculated Value for Duration (or any other date/time) field

Valon Sheremeti
Kilo Guru

Hi,

I am unsuccessfully trying to dynamically set/calculate 'duration' field value based on difference between opened_at and closed_at fields   in an scoped application.

I tried using script below for 'calculated value' but no luck.

Thanks in advance.

(function calculatedFieldValue(current) {

var startDate = current.opened_at;  

var endDate = current.closed_at;  

var duration = GlideDateTime.subtract(startDate, endDate);

return duration;

})(current);

I tried also:

return GlideDateTime.substract(opened_at,closed_at);

but no luck - -my calculated field show <empty> value.

Thank you.

1 ACCEPTED SOLUTION

Can we try something like this


(function calculatedFieldValue(current) {

var startDate = new GlideDateTime(current.opened_at);


var endDate = new GlideDateTime(current.closed_at);


var duration = GlideDateTime.subtract(startDate, endDate);  


return duration.getDisplayValue();


})(current);



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

View solution in original post

20 REPLIES 20

Thanks so much Prateek,


That worked!




However, I am having issues calculating duration correctly when endDate variable is <empty>


Any idea how to overcome that? I.e. by setting endDate variable to today's date? But, don't know how to do that?


Thanks again


Hello Valon


Try this



(function calculatedFieldValue(current) {


            var startDate = new GlideDateTime(current.opened_at);


      var endDate = new GlideDateTime(current.closed_at);


      if(endDate == ''){


              var today = new GlideDateTime();


              var result = GlideDateTime.subtract(startDate, today);


              return result.getDisplayValue();


      }


      else{


              var duration = GlideDateTime.subtract(startDate, endDate);


              return duration.getDisplayValue();


      }  


})(current);



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

That worked !!!


Thanks so much.


V.


Glad that it worked for you


Cheers!



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

Hello Prateek,


I used the same script but experiencing errors. Your input is appreciated.


Scripts:
(function calculatedFieldValue(current) {
var startDate = new GlideDateTime(current.u_today_s_date);
var endDate = new GlideDateTime(current.u_rca_due_date);
      if(endDate == ''){
              var today = new GlideDateTime();
              var result = GlideDateTime.subtract(startDate, today);
              return result.getDisplayValue();
      }
      else{
              var duration = GlideDateTime.subtract(startDate, endDate);
              return duration.getDisplayValue();
      }  
})(current);
return '';   // return the calculated value
})(current);
----------------------------------------------------------------
Evaluator: org.mozilla.javascript.EcmaError: Cannot read property "u_today_s_date" from null
    Caused by error in script at line 4


        Here is my configuration & date:


find_real_file.png