ODF.TIME Function (Gnumeric)
Build Gnumeric time fractions without discarding full days, including negative and fractional components and elapsed-time checks.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: =ODF.TIME(25,0,0) has the reference numeric result 25/24, or approximately 1.041666666667 days. The full day is retained even if a clock-style display shows only 01:00.
Availability and evidence
- Introduction: Gnumeric 1.11.4. The release notes explicitly add ODF.TIME while fixing TIME.
- Source support: Registered in the Gnumeric 1.12.62 plugin. No retirement is established. The last functioning application version is unverified for this guide.
- Evidence dates: Gnumeric 1.12.62 source was retained October 13–14, 2026 and reviewed October 15. Historical introduction evidence, GOffice 0.10.61 source and the calendar reference were retrieved October 15 where cited. Independent calendar or exact-rational calculations are labeled reference results; no native Gnumeric, headless application or GUI execution was performed.
Syntax and units
=ODF.TIME(hour,minute,second)
All three numeric arguments are required. There are no optional defaults. The callback performs this arithmetic directly: (hour*3600+minute*60+second)/86400. It does not truncate the components to integers or reduce the total modulo 24 hours. The result is a fraction of a day, not a count of hours or seconds.
The built-in help explicitly warns that the underlying serial value can be any number even though automatic formatting looks like a time within one day. Thus 25 hours is more than one day, -1 hour is a negative fraction, and 90 minutes is 1.5 hours. A time-looking display is not evidence that full days have been removed from the value.
Reproducible elapsed-time worksheet
Create ElapsedParts with Hours, Minutes, Seconds, Days and Total_hours in A1:E1. Enter triples (8,30,0), (25,0,0), (0,90,0), (-1,30,0) and (1.5,0,0) in rows 2:6. Put =ODF.TIME(A2,B2,C2) in D2 and =D2*24 in E2; fill both down.
The expected E values are 8.5,25,1.5,-0.5,1.5 hours. A negative hour combined with positive 30 minutes gives negative half an hour, not negative 90 minutes. Format D numerically when auditing it so a clock display cannot conceal the day portion or sign. You can choose an elapsed-duration display afterwards, but this guide does not certify a particular localized format string.
Reference controls
| Formula | Independent reference result |
|---|---|
=ODF.TIME(12,30,2) |
0.520856481481 |
=ODF.TIME(25,100,-18) |
1.110902777778 |
=ODF.TIME(8,30,0) |
0.354166666667 |
=ODF.TIME(25,0,0) |
1.041666666667 |
=ODF.TIME(0,90,0) |
0.062500000000 |
=ODF.TIME(-1,30,0) |
-0.020833333333 |
=ODF.TIME(3/2,0,0) |
0.062500000000 |
=ODF.TIME(0,0,0) |
0 |
=ODF.TIME(0,0,1/2) |
0.000005787037 |
=ODF.TIME(49,30,0) |
2.062500000000 |
These exact rational calculations verify the arithmetic definition. They are not native worksheet captures. For example, the vendor’s 25-hour, 100-minute, -18-second case sums to 95,982 seconds before division; the negative seconds adjust the total rather than triggering a special carry rule.
Advanced: retain the days when building a schedule
Put =DATE(2026,1,15) in G2 and =ODF.TIME(25,30,0) in G3. In G4 enter =G2+G3. The independent civil-date result is 2026-01-16 01:30. The offset contains one whole day and one-and-a-half hours. Reading G3 only as a clock time and manually adding 01:30 to the original date would incorrectly produce January 15.
In a copy, change G3 to =ODF.TIME(49,30,0). G4 becomes 2026-01-17 01:30, a further day later, even though the clock portion looks the same. =G3*24 exposes the 49.5-hour total. These are arithmetic additions of worksheet days, not timezone-aware elapsed-time calculations through daylight-saving transitions.
For an aggregation control, sum the five original D2:D6 results. The total is 36 hours, or 1.5 days. Multiplying that sum by 24 converts the result to hours; multiplying each already-hour input by 24 would mix units. Keep the input and output units in column headings.
Errors, fractional values and boundaries
Unlike a conventional clock-entry validator, the callback does not reject negative or oversized components merely for being outside hour/minute/second clock ranges. For example, fractional 1.5 hours is retained, and (0,0,0) returns zero. The ordinary fixtures stay far from floating overflow. The checked result constructor maps non-finite arithmetic to #NUM!, but no extreme native execution is claimed.
The shared numeric argument machinery can coerce some values before this callback. Text parsing, blanks, booleans, arrays and localized separators were not exercised here, so use actual numeric cells for the reproducible controls. Incorrect argument counts are outside the signature. Negative duration display and file-format round trips need separate validation.
Relationship to other time functions
ODF.TIME is documented as OpenFormula compatible. Do not replace it with TIME solely because both accept three time components: preserving a multi-day or negative total is the important contract here. HOUR, MINUTE and SECOND describe components of a displayed time rather than serving as a substitute for the original total duration. Keep the full day fraction if later arithmetic needs elapsed days.