VulCode

Carbon: nasze zmiany w projekcie open source

Rozszerzenie DateTime w PHP do pracy z datami, standard w ekosystemie Laravela.

Język
PHP
Gwiazdki na GitHubie
16 591
Strona projektu
carbon.nesbot.com
1przyjęta zmiana
Scalona 25 września 2026.
11. miejsce wśród 64 projektów na GitHubie z naszymi zmianami, według gwiazdek. Pierwszy jest Zed (91 587).

Zmiana przyjęta w Carbon

round(), floor() i ceil() z dokładnością 60 sekund i więcej przenoszą wynik na minuty, godziny i dni, zamiast tylko zerować sekundy.

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.

PHP

Nasze projekty w tej technologii, ich ekrany i to, kiedy ją wybieramy.

Błąd, poprawka i wniosek

Skrót naszego opisu z Nowinek technicznych: co nie działało, co zmieniliśmy i co z tego wynika dla naszej pracy.

Co nie działało

round(3600) zerował tylko sekundy

Dla liczbowej precyzji Carbon zaokrąglał samą wartość sekund, więc od 60 w górę minuty i godziny zostawały bez zmian.

Carbon::parse('2026-01-01 14:21:37')->round(3600) -> 14:21:00 (zamiast 14:00:00)
Carbon::parse('2026-01-01 14:30:00')->ceil(3600) -> 14:30:00 (zamiast 15:00:00)
Co zmieniliśmy

Przeniesienie na wyższe jednostki

Liczbowa precyzja, która obejmuje całą następną jednostkę, jest przenoszona w górę: 3600 sekund to 60 minut, a 60 minut to godzina. Dni nigdy nie przechodzą na miesiące.

Czego nas to nauczyło

Zaokrąglanie czasu musi przenosić wynik na wyższe jednostki, tak jak dodawanie.

Godzina zaokrąglona do pełnej godziny nie może skończyć się na 60 minutach.

Inne projekty z naszymi zmianami: PHP

20 projektów w tej technologii ma nasze przyjęte zmiany. Pasek to gwiazdki repozytorium, obok liczba naszych zmian. Każdy wiersz prowadzi do strony projektu.

Pytania o nasze zmiany w Carbon

Skąd są te zmiany, kto je przyjął i czy poprawimy coś w Twojej bibliotece.

Używasz Carbon w swoim projekcie?

Jeśli coś w nim nie działa, poprawimy to u źródła i zostawimy obejście do czasu wydania. Odpiszemy w godzinę.