0Pricing
Ruby Academy · Урок

Арифметика времени

Продолжительности и разница

«Арифметика времени» — бесплатный урок Ruby Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Добавление секунд к значению Time

Арифметика с Time выполняется в секундах. Добавление числа к значению Time сдвигает его вперёд на соответствующее количество секунд.

t = Time.new(2026, 5, 30, 12, 0, 0)
later = t + 60
puts(later.min)

Вычитание секунд

Вычитание числа сдвигает значение Time назад на соответствующее количество секунд.

t = Time.new(2026, 5, 30, 12, 0, 0)
earlier = t - 3600
puts(earlier.hour)

Понятные интервалы времени

Выражайте интервалы как произведения секунд, чтобы назначение было очевидным: 60 секунд, 60 * 60 — час, 24 * 60 * 60 — день.

day = 24 * 60 * 60
t = Time.new(2026, 5, 30)
puts((t + day).day)

Разница между двумя моментами времени

Вычитание одного значения Time из другого даёт число с плавающей точкой, выраженное в секундах, между этими моментами.

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)

Преобразование интервала

Преобразуйте разницу в секундах в часы и минуты с помощью целочисленной арифметики.

secs = 5400
puts("#{secs / 3600}h #{(secs % 3600) / 60}m")

Арифметика с датами в днях

В отличие от Time, класс Date выполняет сложение в днях. Добавление целого числа сдвигает дату вперёд на соответствующее количество дней.

require 'date'
d = Date.new(2026, 5, 30)
puts((d + 5).to_s)

Разница между датами

Вычитание двух значений Date возвращает число дней типа Rational. Вызовите to_i, чтобы получить количество полных дней.

require 'date'
a = Date.new(2026, 1, 1)
b = Date.new(2026, 12, 31)
puts((b - a).to_i)

Сдвиг месяцев и лет

У класса Date есть методы next_month, prev_month, next_year и операторы >> / << для безопасного сдвига по месяцам.

require 'date'
d = Date.new(2026, 5, 30)
puts(d.next_month.to_s)
puts((d >> 3).to_s)

Безопасная работа с концом месяца

При сдвиге по месяцам дата ограничивается допустимыми значениями. Добавление месяца к 31 января даёт последний допустимый день февраля, а не недопустимую дату.

require 'date'
d = Date.new(2026, 1, 31)
puts((d >> 1).to_s)

Подсчёт дней до даты

Распространённая задача: узнать, сколько дней осталось до будущей даты. Вычтите сегодняшнюю дату из целевой.

require 'date'
target = Date.new(2026, 12, 25)
from = Date.new(2026, 5, 30)
puts("#{(target - from).to_i} days to go")

Измерение прошедшего времени

Чтобы измерить продолжительность работы кода, получите Time.now до и после выполнения, а затем вычтите одно значение из другого.

start = Time.now
sum = 0
1000.times { |i| sum += i }
puts("sum=#{sum}")
puts((Time.now - start) >= 0)

Быстрая проверка

Что возвращает Ruby при вычитании одного значения Time из другого?

Повторение: арифметика со временем

Теперь Вы умеете выполнять вычисления со временем:

  • Time складывает и вычитает значения в секундах
  • Date складывает и вычитает значения в днях
  • Разность Time и Time даёт секунды (число с плавающей точкой)
  • Разность Date и Date даёт дни (Rational)
  • next_month, >>, << безопасно сдвигают дату по месяцам
require 'date'
puts((Date.new(2026,6,1) - Date.new(2026,5,1)).to_i)

Часто задаваемые вопросы

Урок «Арифметика времени» бесплатный?

Да — полный текст урока «Арифметика времени» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Арифметика времени»?

Продолжительности и разница Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Арифметика времени»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Классы времени и даты
  2. Разбор и форматирование
  3. Арифметика времени
  4. Часовые пояса
← Назад к Ruby Academy