Populate duration field with subtracting two dates

ServNowDev
Tera Guru
   // Add your code here

    if (current.departure_date && current.return_date) {
        var departureDate = new GlideDateTime(current.departure_date);
        var returnDate = new GlideDateTime(current.return_date);
        var durationCalculated = returnDate.getNumericValue() - departureDate.getNumericValue();
        
		
		current.duration = durationCalculated;

    }

Im getting a NAN for the output, not sure why but i would like to populate the duration of these return and departure dates and place in the duration field. it is of duration type, also im up for changing the type if needed as well.

5 REPLIES 5

Anurag Tripathi
Mega Patron
Mega Patron

HI,

Try this

 

  if (current.departure_date && current.return_date) {
        var departureDate = new GlideDateTime(current.departure_date);
        var returnDate = new GlideDateTime(current.return_date);
        var durationCalculated = GlideDateTime.subtract(returnDate, departureDate );
        	
		current.duration = durationCalculated;

    }

 

-Anurag

still returning a data and not a value 

Thomas42_0-1699031353249.png

 

Harish Bainsla
Kilo Patron
Kilo Patron

if (current.departure_date && current.return_date) {
var departureDate = new GlideDateTime(current.departure_date);
var returnDate = new GlideDateTime(current.return_date);

// Check if the date fields are valid
if (departureDate.isValid() && returnDate.isValid()) {
var durationCalculated = returnDate.getNumericValue() - departureDate.getNumericValue();

// Check if the duration field is of the correct type
if (!isNaN(durationCalculated)) {
current.duration = durationCalculated;
} else {
gs.log("Duration calculation resulted in NaN.");
}
} else {
gs.log("Invalid date format in departure_date or return_date.");
}
} else {
gs.log("Departure date and/or return date is empty or null.");
}

Abhijeet_Pawar
Tera Guru

Hello @ServNowDev ,

The issue you're facing is likely due to the fact that the getNumericValue() method returns the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this date/time. When you subtract these two large numbers, you're getting the duration in milliseconds, which is not a format that the duration field can understand, hence the NaN (Not a Number) error is coming.

 

if (current.departure_date && current.return_date) {
var departureDate = new GlideDateTime(current.departure_date);
var returnDate = new GlideDateTime(current.return_date);
var durationCalculated = returnDate.getNumericValue() - departureDate.getNumericValue();
var durationInSeconds = durationCalculated / 1000;
var duration = new GlideDateTime();
duration.setValue(durationInSeconds);
current.duration = duration.getDisplayValue();
}

 

If my response helps you resolve your issue. Kindly mark it as helpful & correct. It will be helpful to future readers! 

Thanks and Regards,
Abhijeet Pawar.