https://bugs.documentfoundation.org/show_bug.cgi?id=136615

--- Comment #22 from SheetJS <d...@sheetjs.com> ---
> Yes, and if Excel is rounding 0.999999930555556 (=86399.994/86400) which is
> 23:59:59.994 to 00:00:00 that's obviously wrong.

The lowest time unit is seconds, so Excel rounds to the nearest second.  The
`hh` format is the time in hours, so when rounding you get `00`.  If you want
to know the duration, Excel's format token is `[hh]` (hh wrapped in square
brackets).

It would help to look at these formats in Excel:

```
=TEXT(0.999999930555556,"hh:mm:ss")     ## No msec, relative time -> "00:00:00"
=TEXT(0.999999930555556,"[hh]:mm:ss")   ## No msec, absolute time -> "24:00:00"
=TEXT(0.999999930555556,"hh:mm:ss.000") ## round to milliseconds -> 
"23:59:59.994"
```

This is internally consistent rounding logic, specifically "1) always round to
the most granular date token"

.

LibreOffice, by contrast, appears to be inconsistent.  Testing the same
examples:

```
=TEXT(0.999999930555556,"hh:mm:ss")     ## 23:59:59     (truncate)
=TEXT(0.999999930555556,"[hh]:mm:ss")   ## 24:00:00     (round to  sec)
=TEXT(0.999999930555556,"hh:mm:ss.000") ## 23:59:59.994 (round to msec)
```

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to