Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

[AEM Gems Webinar] Accelerating Experience Manager as a Cloud Service development with Rapid Development Environments
Adobe Summit 2023 | Complete list of AEM Sessions & Labs

How do you calculate difference in time (hours and minutes) between 2 two date/time fields?

Avatar

Level 1

Have trouble creating formula using FormCalc that will calculate difference in time (hours and minutes) from a Start Date/Time field and End Date/Time field. 

I am using to automatically calculate total time in hours and minutes only of an equipment outage based on a user entered start date and time and end date and time. 

For example a user enters start date/time of an equipment outage as 14-Oct-12 08:12 AM and then enters an end date/time of the outage of 15-Oct-12 01:48 PM.  I need a return that automatically calculates total time in hours and minutes of the equipment outage.

Thanks Chris

0 Replies

Avatar

Level 10

Hi,

In JavaScript you could do something like;

var DateTimeRegex = /(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d)/;

var d1 = DateTimeRegex.exec(DateTimeField1.rawValue);

if (d1 !== null)

{

    var fromDate = new Date(d1[1], d1[2]-1, d1[3], d1[4], d1[5]);

}

var d2 = DateTimeRegex.exec(DateTimeField2.rawValue);

if (d2 !== null)

{

    var toDate = new Date(d2[1], d2[2]-1, d2[3], d2[4], d2[5]);

}

const millisecondsPerMinute = 1000 * 60;

const millisecondsPerHour = millisecondsPerMinute * 60;

const millisecondsPerDay = millisecondsPerHour * 24;

var interval = toDate.getTime() - fromDate.getTime();

var days = Math.floor(interval / millisecondsPerDay );

interval = interval - (days * millisecondsPerDay );

var hours = Math.floor(interval / millisecondsPerHour );

interval = interval - (hours * millisecondsPerHour );

var minutes = Math.floor(interval / millisecondsPerMinute );

console.println(days + " days, " + hours + " hours, " + minutes + " minutes");

This assumes that the values in DateTimeField1 and DateTimeField2 are valid, which means the rawValue will be in a format like 2009-03-15T18:15

Regards

Bruce