Co nie działało
Carbon to biblioteka do dat w PHP, z której korzysta między innymi Laravel. Metody round(), floor() i ceil() przyjmują precyzję jako nazwę jednostki ('hour') albo jako liczbę, którą dokumentacja i testy opisują jako liczbę sekund. Dla wartości poniżej 60 wszystko działało, na przykład round(5) zaokrąglał do 5 sekund. Od 60 w górę wynik zostawał zamknięty w polu sekund:
Kod ustawiał dla liczbowej precyzji jednostkę second i zaokrąglał samą wartość sekund, która mieści się w zakresie 0-59. Przy precyzji 3600 wynik zawsze wychodził zero, a minuty i godziny nie były w ogóle ruszane. Ten sam błąd dotyczył zapisu '3600 seconds'.
Co zmieniliśmy
W roundUnit() liczbowa precyzja, która obejmuje całą następną jednostkę, jest przenoszona w górę: 3600 sekund to 60 minut, a 60 minut to godzina. Lista przejść zawiera tylko jednostki o stałej długości, więc precyzja w dniach nigdy nie jest przenoszona na miesiące, bo miesiące mają różną liczbę dni.
Jak to sprawdziliśmy
Nowy test porównuje wyniki liczbowej precyzji z wersją tekstową: round(3600) z round('hour'), round(120) z round('2 minutes'), round(86400) z round('day'), a do tego floor(3600) tuż przed pełną godziną i ceil(3600) w połowie godziny.
Efekt
Zmianę scalono 25 września 2026. Liczbowa precyzja zachowuje się w Carbonie tak samo jak odpowiadająca jej nazwa jednostki.