Populate duration field with subtracting two dates
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-03-2023 08:59 AM
// 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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-03-2023 09:02 AM - edited ‎11-03-2023 09:03 AM
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;
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-03-2023 10:09 AM
still returning a data and not a value
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-03-2023 05:18 PM
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.");
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎11-04-2023 01:12 AM
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.