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.

How to get difference between two dates(Start date and End date) in the scoped application?

J P Rohini
Tera Contributor

Hi all,

How to get difference between two dates(Start date and End date) in the scoped application?

i have tried this code, but dint work out,

var v1 = new GlideRecord('x_252275_video_video_table');
v1.query();
while(v1.next()){
var g1 = new GlideDateTime('start_date');
var g2 = new GlideDateTime('end_date');
var sub = new GlideDateTime.subtract(g1,g2);
gs.info('Testing'+' '+sub);
}

Output returns in this format:1970:11:21  8:00:54:06

But Output should be in this format: 1 year 11 months 12 days

Thanks in Advance

Any help is appreciated.

 

1 ACCEPTED SOLUTION

Satyanarayana C
ServiceNow Employee
ServiceNow Employee

Hi,

Please check if this works for you.

function convertDaysToYearsMonthsDays (diff) {
  var str = '';
  var values = [[' year', 365], [' month', 30], [' day', 1]];
  for (var i=0;i<values.length;i++) {
    var amount = Math.floor(diff / values[i][1]);
    if (amount >= 1) {
       str += amount + values[i][0] + (amount > 1 ? 's' : '') + ' ';
       diff -= amount * values[i][1];
    }
  }

  return str;
}


var dur = new GlideDuration();
dur.setValue('2018-03-01 07:30:00'); 

var duration2 = new GlideDuration();
duration2.setValue('2020-06-10 10:35:00'); 

var answer = duration2.subtract(dur);
gs.info(answer.getDisplayValue());

// get the day part
var gd = new GlideDuration(answer);
gs.info(convertDaysToYearsMonthsDays(gd.getDayPart()));

The function convertDaysToYearsMonthsDays - is taken from internet.

Thanks

View solution in original post

16 REPLIES 16

Kieran Anson
Kilo Patron

Hi,

add getDisplayValue() to the end of your sub variable.

gs.info('Testing ' + sub.getDisplayValue());

Hi Kieran

Tried with this but dint work out,

gs.info('Testing ' + sub.getDisplayValue());

Actually, the output should be 1 year 14 months 1190 days.

Priya Shid1
Kilo Guru

Hi Ramaya,

 

try using below code,

var v1 = new GlideRecord('x_252275_video_video_table');
v1.query();
while(v1.next()){
var g1 = new GlideDate('start_date');
var g2 = new GlideDate('end_date');
var sub = new GlideDate.subtract(g1,g2);
gs.info('Testing'+' '+sub.getDisplayValue());
}

 

Please mark if that helps you!!!

 

Hi Priya,

The above code dint work for me, 

Actually the output should be 1 year 14 months 1190 days.