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.

Convert days into hours

Abhijit Das7
Tera Expert

Hi Everyone, 

 

I am running a background script on case table to get the opened date and closed date of the case. Then I am getting the difference between the two days ( Closed Date - Opened Date), I am getting something like this in script , 13 Days 20 Hours 22 Minutes . I want to convert this into hours in script like 332 Hours.

 

Can anyone help in converting days to hours.

 

Thanks in advance.

1 ACCEPTED SOLUTION

Harish KM
Kilo Patron
Kilo Patron

Hi @Abhijit Das7 here is the script

var gr = new GlideRecord('incident');
gr.addQuery('sys_id','e329de99731423002728660c4cf6a73c');
gr.query();
if(gr.next())
{
var openedDate = gr.getValue('sys_created_on');
gs.info(openedDate);
var closedDate = gr.getValue('closed_at');
gs.info(closedDate);
var gdt1 = new GlideDateTime(openedDate);
var gdt2 = new GlideDateTime(closedDate);
var dur = new GlideDateTime.subtract(gdt1, gdt2);
gs.info(dur.getDisplayValue());
var hours = dur.getNumericValue() / 1000 / 60 / 60; // convert to hours
gs.info(hours);
}
 
HarishKM_0-1710830135610.png

 

Regards
Harish

View solution in original post

4 REPLIES 4

Dhananjay Pawar
Kilo Sage

Hi,

Could you please share your script?

Thanks.

Harish KM
Kilo Patron
Kilo Patron

Hi @Abhijit Das7 here is the script

var gr = new GlideRecord('incident');
gr.addQuery('sys_id','e329de99731423002728660c4cf6a73c');
gr.query();
if(gr.next())
{
var openedDate = gr.getValue('sys_created_on');
gs.info(openedDate);
var closedDate = gr.getValue('closed_at');
gs.info(closedDate);
var gdt1 = new GlideDateTime(openedDate);
var gdt2 = new GlideDateTime(closedDate);
var dur = new GlideDateTime.subtract(gdt1, gdt2);
gs.info(dur.getDisplayValue());
var hours = dur.getNumericValue() / 1000 / 60 / 60; // convert to hours
gs.info(hours);
}
 
HarishKM_0-1710830135610.png

 

Regards
Harish

Maddysunil
Kilo Sage

@Abhijit Das7 

Tested below code on background script, working as expected:

 

// Assuming 'duration' is the variable containing the duration "13 Days 20 Hours 22 Minutes"
duration="13 Days 20 Hours 22 Minutes";
var durationParts = duration.split(" "); // Split the duration string into parts
var days = parseInt(durationParts[0]) || 0; // Extract days part and convert to integer
var hours = parseInt(durationParts[2]) || 0; // Extract hours part and convert to integer
var minutes = parseInt(durationParts[4]) || 0; // Extract minutes part and convert to integer

// Convert days and hours into total hours
var totalHours = (days * 24) + hours + Math.round(minutes / 60);

gs.info("Total hours: " + totalHours);

 

 

Please Mark Correct if this solves your query and also mark 👍Helpful if you find my response worthy based on the impact.

 

Thanks

M Ismail
Tera Guru

Hi @Abhijit Das7,

Check out this script 

var gr = new GlideRecord('sn_customerservice_case');
gr.addQuery('sys_id', '00c7e29987498a1050fa0f29dabb35a8');
gr.query();
if (gr.next()) {
    var openedDate = gr.getValue('sys_created_on');
    gs.info("Opened Date: " + openedDate);
    var closedDate = gr.getValue('closed_at');
    gs.info("Closed Date: " + closedDate);
    
    var gdt1 = new GlideDateTime(openedDate);
    var gdt2 = new GlideDateTime(closedDate);
    
    // Subtract gdt2 from gdt1 to get the duration
    var dur = GlideDateTime.subtract(gdt1, gdt2);
    gs.info("Duration: " + dur.getDisplayValue());
    
    // Calculate duration in hours
    var hours = dur.getNumericValue() / (1000 * 60 * 60); // Convert milliseconds to hours
    gs.info("Duration in Hours: " + hours);
}

Here is a output 

MIsmail_0-1710831606923.png


Please hit helpful and accept this as a solution if it solved your problem.
Thank you!