Działania arytmetyczne na czasie
Czasy trwania i różnice
Działania arytmetyczne na czasie to bezpłatna lekcja Ruby Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Ruby Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Dodawanie sekund do obiektu Time
Działania arytmetyczne na obiektach Time wykonuje się w sekundach. Dodanie liczby do obiektu Time przesuwa go do przodu o podaną liczbę sekund.
t = Time.new(2026, 5, 30, 12, 0, 0)
later = t + 60
puts(later.min)Odejmowanie sekund
Odjęcie liczby przesuwa obiekt Time wstecz o podaną liczbę sekund.
t = Time.new(2026, 5, 30, 12, 0, 0)
earlier = t - 3600
puts(earlier.hour)Czytelne okresy czasu
Okresy czasu należy wyrażać jako iloczyny sekund, aby intencja była jasna: 60 sekund, 60 * 60 to godzina, a 24 * 60 * 60 to dzień.
day = 24 * 60 * 60
t = Time.new(2026, 5, 30)
puts((t + day).day)Różnica między dwoma obiektami Time
Odjęcie jednego obiektu Time od drugiego zwraca wartość Float wyrażającą liczbę sekund między nimi.
a = Time.new(2026, 5, 30, 12, 0, 0)
b = Time.new(2026, 5, 30, 13, 30, 0)
diff = b - a
puts(diff)
puts(diff / 60)Konwertowanie okresu czasu
Należy przekształcić różnicę wyrażoną w surowych sekundach na godziny i minuty za pomocą arytmetyki całkowitoliczbowej.
secs = 5400
puts("#{secs / 3600}h #{(secs % 3600) / 60}m")Arytmetyka dat w dniach
W przeciwieństwie do Time klasa Date dodaje wartości w dniach. Dodanie liczby całkowitej przesuwa datę do przodu o podaną liczbę dni.
require 'date'
d = Date.new(2026, 5, 30)
puts((d + 5).to_s)Różnica między dwiema datami
Odjęcie dwóch obiektów Date zwraca liczbę dni typu Rational. Należy wywołać to_i, aby uzyskać liczbę pełnych dni.
require 'date'
a = Date.new(2026, 1, 1)
b = Date.new(2026, 12, 31)
puts((b - a).to_i)Przesuwanie miesięcy i lat
Klasa Date udostępnia metody next_month, prev_month, next_year oraz operatory >> / << do bezpiecznego przesuwania dat o całe miesiące.
require 'date'
d = Date.new(2026, 5, 30)
puts(d.next_month.to_s)
puts((d >> 3).to_s)Bezpieczne przechodzenie na koniec miesiąca
Przesuwanie o miesiące ogranicza wynik do poprawnych dat. Dodanie miesiąca do 31 stycznia daje ostatni poprawny dzień lutego, nigdy niepoprawną datę.
require 'date'
d = Date.new(2026, 1, 31)
puts((d >> 1).to_s)Obliczanie liczby dni do daty
Częste zadanie: obliczenie liczby dni pozostałych do przyszłej daty. Należy odjąć dzisiejszą datę od daty docelowej.
require 'date'
target = Date.new(2026, 12, 25)
from = Date.new(2026, 5, 30)
puts("#{(target - from).to_i} days to go")Mierzenie czasu wykonania
Aby zmierzyć czas działania kodu, należy pobrać Time.now przed jego wykonaniem i po nim, a następnie obliczyć różnicę.
start = Time.now
sum = 0
1000.times { |i| sum += i }
puts("sum=#{sum}")
puts((Time.now - start) >= 0)Szybkie sprawdzenie
Co zwraca Ruby po odjęciu jednego obiektu Time od drugiego?
Podsumowanie: arytmetyka czasu
Mogą już Państwo wykonywać obliczenia związane z czasem:
- Dodawanie i odejmowanie Time odbywa się w sekundach
- Dodawanie i odejmowanie Date odbywa się w dniach
- Time minus Time daje sekundy typu Float
- Date minus Date daje dni typu Rational
next_month,>>i<<bezpiecznie przesuwają daty o miesiące
require 'date'
puts((Date.new(2026,6,1) - Date.new(2026,5,1)).to_i)Często zadawane pytania
Czy lekcja „Działania arytmetyczne na czasie” jest bezpłatna?
Tak — pełny tekst „Działania arytmetyczne na czasie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Ruby Academy, przejdź na CoddyKit PRO. Kurs Ruby Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Działania arytmetyczne na czasie”?
Czasy trwania i różnice Ćwiczysz Ruby Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Ruby Academy?
Nie wymagamy żadnego doświadczenia. Ruby Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Działania arytmetyczne na czasie”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Ruby Academy?
Tak. Każda lekcja Ruby Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Klasy czasu i daty
- Parsowanie i formatowanie
- Działania arytmetyczne na czasie
- Strefy czasowe