How to calculate Date difference between two catalog fields?

rathikaramamurt
Giga Expert

Hi All,

I have a requirement to display a field in the catalog form, only when the difference between two Date type fields are calculated and the condition appears as if like below:

The 1st field (Launch Date) Date is less than 4 days away from the ticket creation date/time, ie., Created (date/time) field.

Here is my onchange client script:

*******************************************

function onChange(control, oldValue, newValue)

{

alert('you changed Launch Date from ' + oldValue + ' to ' + newValue);

if(newValue != '')

{

  var start = g_form.getValue('request_datetime').split(' ')[0];

  var end = g_form.getValue('launch_date');

  var ajax = new GlideAjax('AjaxDurCalc');

  ajax.addParam('sysparm_name','durCalc');

  ajax.addParam('sysparm_start',start);

  ajax.addParam('sysparm_end',end);

  ajax.getXML();

  var answer = ajax.getAnswer();

  alert(ajax.getAnswer());

if(ajax.getAnswer()<4)

  {

  alert("if");

  g_form.setDisplay('warning', true);

  }

  else

  {

  alert("else");

  g_form.setDisplay('warning', false);

  }

}

}

My script include is as below:

*******************************************

var AjaxDurCalc = Class.create();

AjaxDurCalc.prototype = Object.extendsObject(AbstractAjaxProcessor, {

durCalc: function() {

  //return gs.dateDiff(this.getParameter('sysparm_start').getDisplayValue(), this.getParameter('sysparm_end').getDisplayValue(), false);

  var sd = new GlideDate(this.getParameter('sysparm_start'));

  var ed = new GlideDate(this.getParameter('sysparm_end'));

  var diffSeconds = gs.subtract(sd,ed);

  var converttodays = diffSeconds/(60*60*24);

  return converttodays;

}

});

This script is not working properly. Null value is resulted for "ajax.getAnswer()"

Could any1 pls help?

1 ACCEPTED SOLUTION

Its straightforward. Date variables internally have milliseconds itself.   You can subtract them and convert into days. I put additional alert statements. Remove them, once you get the correct difference.



var one_day=1000*60*60*24;


var start = g_form.getValue('request_datetime').split(' ')[0];


var end = g_form.getValue('launch_date');


var date1_ms = new Date(start);


var date2_ms = new Date(end);


var difference_ms = date2_ms - date1_ms;


// Convert back to days and return


alert("Difference in days");


alert(Math.round(difference_ms/one_day));    


View solution in original post

10 REPLIES 10

Hi Ram,



That worked out.



Thanks,


Rathika.