Show the date time difference in days only

Evan2
Kilo Guru

Hi All,

 

We have created a widget and widget visibility is based on SLA breach time. If SLA breach time is less than one day from today then we want to show the button.

For this I have tried below script to fetch the date difference in days only between now time and breach time. So the value I am getting in background script for days and time difference is correct but when I making it for days only it is returning undefined in script background.

 

Below is the my script and output. Please let me know how can i get the days difference between two date time fields in server script.

var sla = new GlideRecord('task_sla');
sla.addQuery('task', 'e5c796911b9781502e25a8ade54bcbcd');
sla.query();
if(sla.next())
{
var nowTime = new GlideDateTime();
var gdt = new GlideDateTime(sla.original_breach_time);
//gdt.addDaysUTC(-1);
var answer = gs.dateDiff(nowTime, gdt, false);
gs.print("Days is: "+answer);
var days = answer.getRoundedDayPart();
gs.print("Number of Days is: "+days);

}

 

 

Output :- find_real_file.png

1 ACCEPTED SOLUTION

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

Please use subtract() method of GlideDateTime instead of dateDiff and it has inbuilt function to get Day part i.e. getDayPart()

subtract(GlideDateTime start, GlideDateTime end)

something like this

var sla = new GlideRecord('task_sla');
sla.addQuery('task', 'e5c796911b9781502e25a8ade54bcbcd');
sla.query();
if(sla.next())
{
	var nowTime = new GlideDateTime();
	var gdt = new GlideDateTime(sla.original_breach_time);
	var dur = new GlideDuration();
	dur = GlideDateTime.subtract(nowTime, gdt);
	var daysPart = dur.getDayPart();
	gs.info(daysPart);
}

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

4 REPLIES 4

suvro
Mega Sage
Mega Sage

explore getDay() method

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

Please use subtract() method of GlideDateTime instead of dateDiff and it has inbuilt function to get Day part i.e. getDayPart()

subtract(GlideDateTime start, GlideDateTime end)

something like this

var sla = new GlideRecord('task_sla');
sla.addQuery('task', 'e5c796911b9781502e25a8ade54bcbcd');
sla.query();
if(sla.next())
{
	var nowTime = new GlideDateTime();
	var gdt = new GlideDateTime(sla.original_breach_time);
	var dur = new GlideDuration();
	dur = GlideDateTime.subtract(nowTime, gdt);
	var daysPart = dur.getDayPart();
	gs.info(daysPart);
}

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Evan2
Kilo Guru

Hi Ankur,

 

Thank you for this quick help. I appreciate your efforts and it worked for me. Thank you so much.

 

Regards

Kumar

Hitoshi Ozawa
Giga Sage
Giga Sage

Hi Evan,

Using gs.beginningOfYesterday().

https://developer.servicenow.com/dev.do#!/reference/api/sandiego/server_legacy/c_GlideSystemAPI#r_GS...

var sla = new GlideRecord('task_sla');
sla.addQuery('task', 'e5c796911b9781502e25a8ade54bcbcd');
sla.query();
if (sla.next()) {
    var nowTime = new GlideDateTime();
    var gdt = new GlideDateTime(sla.original_breach_time);

    var yesterday = new GlideDateTime(gs.beginningOfYesterday());

    if (gdt.getDate() == yesterday.getDate()) {
        gs.info('breach date is 1 day from today.');
    }
}