[SalesForce] Calculating and displaying the time difference between two date/time fields in hours and minutes

I am getting the difference in time between two date/time fields. I need to show the time in hours:minutes in another field.

Long timeOpen = BusinessHours.diff(bh.Id, ar.Date_Time_Assigned__c, ar.Completed_Canceled_Date_Time__c);
Long seconds = timeOpen / 1000;
Long minutes = seconds / 60;
Long hours = minutes / 60;
ar.Time_Open__c = hours;

Right now, I'm only getting the hours, but I need to include the minutes too.

Best Answer

If you look at my answer to the following question here, I created a very simple time difference utility to return the time difference between two Time instances or two DateTime instances.

From there you can extend the utility with the following to get what you want:

public static String GetHourAndMinuteDisplay(DateTime startDate, DateTime endDate)
{
    return GetElapsedTime(startDate, endDate).format('hh:mm');
}

If you need to get hours or minutes separately, it's rather straight-forward.

For hours:

public static Integer GetElapsedHours(DateTime startDate, DateTime endDate)
{
    return GetElapsedTime(startDate, endDate).hour();
}

For minutes:

public static Integer GetElapsedMinutes(DateTime startDate, DateTime endDate)
{
    return GetElapsedTime(startDate, endDate).minute();
}
Related Topic