Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Help needed with gs.dateDiff() to calculate difference between dates

sushant007
Kilo Guru

Hi,

I want to get difference between two fields using gs.dateDiff(field,field,false);

Here is my BR which will be executed after insert/update on table:

 

myFunction();

function myFunction() {

var endtime = "";

var now1 = "";

var extra_time="";

if (current.u_mon != "")

{

endtime = current.u_mon;

now1 = current.u_mon.getGlideObject();

extra_time=now1.getTime();                                             //   returning value 1970-01-01 22:11:00

  }

if(now1.getTime() >'1970-01-01 21:00:00')

  {

  var stdEndTime=new GlideDateTime('1970-01-01 21:00:00');

  gs.addInfoMessage("Start time for extra is"+stdEndTime); //here getting correct start time which is 1970-01-01 21:00:00

  gs.addInfoMessage("end time for extra is"+now1.getTime()); // here getting correct end time which is 1970-01-01 22:11:00

gs.addInfoMessage("extra time is"+gs.dateDiff(stdEndTime,now1.getTime(),false)); // here i am gettting 00:00:00 but should be 01:11:00

  }

  }

Date format or date and time displayed on my form is mm-dd-yy HH:MM AM/PM, for e.g 06-02-14 6:11 PM.

I am not getting where it's going wrong, appreciate your assistance

6 REPLIES 6

Subhajit1
Giga Guru

Could you try:-


var dr=gs.dateDiff(stdEndTime,now1.getTime(),true));


gs.addInfoMessage("extra time is"+dr);




See if a non-zero value is being returned.


If so, then i think you will have to typecast the return.


getting 0.


if i use:


gs.addInfoMessage("extra time is"+gs.dateDiff(stdEndTime,now1.getTime(),true));


OK.


Use getDisplayValue() or getDisplayValueInternal() or getValue() instead of getTime() and check which one works correctly.


Subhajit


please see below info messages:



end time for extra when getDisplayValue() 06-02-14 6:11 PM


end time for extra when getDisplayValueInternal() 2014-06-02 18:11:00
end time for extra when getValue() 2014-06-02 22:11:00
and calculated difference is:

extra time when getDisplayValue() used in date diff instead of getTime() is -55030 17:11:00


extra time when getDisplayValueInternal() used in date diff instead of getTime() is 1707 23:00:00
extra time when getValue() used in date diff instead of getTime() is 1707 23:00:00



All i want to get the extra time if any incident is resolved after 21:00:00 (05:00 PM as per the system)


considered example incident closed @ 06:11 PM.


So m first getting the closed time from getTime() which is returning 1970-01-01 22:11:00 so using dateDiff() m setting the hard coded value of start 1970-01-01 21:00:00.



is there any other way to write gs.dateDiff(stdEndTime,now1.getTime(),false))  


stdEndTime is hard coded value and which i have entered because the getTime() is returning value like 1970-01-01 HH:MM:SS.


Please help me out of this