# Number format for "quantity of time"?

I need a way to format a cell that has a quantity of time, as in 5 days, 2 hours, 14 minutes, and so far haven't found a way to do this with the built-in cell formatting.

The "time" format HH:MM comes close to the sort of behavior I'd want, but fails on values longer than 24 hours. Since HH was designed to be used as part of a date, it only shows the value modulo 24. The time I would want to display as 25:14 actually renders as 01:14.

As a temporary workaround, I've been using the following BASIC function. This displays as I want, and can be used in cells as =FTIME(<some calc time value>).

 Function ftime(calcTime as Double) as string
Dim mins as Long
mins = CLong(calcTime * 60.0 * 24.0)
Dim Negative as Boolean
Negative = (mins < 0)
if Negative then
mins = 0 - mins
end if
dim hrs as long
dim days as long
hrs = mins \ 60
mins = (mins Mod 60)
dim txt as string
if negative then
txt = "("
else
txt = ""
end if
txt = txt & hrs & ":"
if mins < 10 then
txt = txt & "0"
end if
txt = txt & mins
if negative then
txt = txt & ")"
end if
ftime = txt
End Function


The problem arises because as far as Calc is concerned, the value is now a string. So, when I want to re-use the value elsewhere it must be converted back. I now have cells with formulae like =FTIME(UNFTIME(A5) + UNFTIME(A6)). Using SUMIFS or VLOOKUP requires me to make a separate column with unformatted values.

Is there a number format code I've missed that works well with durations? Is there a way to extend the number formatting system from within the context of a macro? Is there a way to write a plugin in Java that would provide a new kind of number format?

edit retag close merge delete

Sort by » oldest newest most voted

You may use square brackets for most significant part of your time format: [HH]:MM:SS, or [MM]:SS, to show time like "12300:00:21" or "738000:21".

You may use the fact that date/time is actually a float that measures in days, i.e. whole part is number of days, and fractional part is fraction of day (i.e. time), so 0.5 is 12:00 AM (noon). So, a formula like =TRUNC(A1)&" days "&TEXT(MOD(A1,1),"HH \h\r MM \m\i\n SS \s\e\c") might do the job. This creates a string indeed, but in this case, you would probably want to keep time spans in a different (hidden?) column which were used for further calculations, and this formula would serve the purpose of displaying data to user.

more