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.