#4988
Fix 12-hour formatting of floating-point durations
On fdf31252e61c, formatting std::chrono::duration<double>(1) with {:%I:%M:%S %p} produces 00:00:01 AM instead of 12:00:01 AM. The same problem occurs during the first hour after noon.
We map fractional hours below one to 12 before the digit writer truncates them. The new regression test fails before the change and passes afterward, along with the existing chrono suite and the standalone reproducer.
— ChipLab