Ruby's Date class represents calendar dates without depending on the current clock.

date object A `Date` stores year, month, and day values and can answer calendar questions.

Date Objects

year
date_objects.rb
Replay: real traced execution (multi-file project)
require "date"

year = 2025
date = Date.new(year, 5, 28)

iso = date.iso8601
day_of_year = date.yday

puts "date=#{iso}"
puts "year=#{date.year}"
puts "day_of_year=#{day_of_year}"
require "date"

year = 2024
date = Date.new(year, 5, 28)

iso = date.iso8601
day_of_year = date.yday

puts "date=#{iso}"
puts "year=#{date.year}"
puts "day_of_year=#{day_of_year}"
require "date"

year = 2026
date = Date.new(year, 5, 28)

iso = date.iso8601
day_of_year = date.yday

puts "date=#{iso}"
puts "year=#{date.year}"
puts "day_of_year=#{day_of_year}"
  1. year ← 2025, date ← 2025-05-28, iso ← 2025-05-28, day_of_year ← 148

    1require "date"23year→ 2025 = 2025  #@year=2024, 20264date→ 2025-05-28 = Date.new(year2025, 5, 28)56iso→ 2025-05-28 = date.iso86012025-05-287day_of_year→ 148 = date.yday14889puts "date=#{iso2025-05-28}"10puts "year=#{date.year2025}"11puts "day_of_year=#{day_of_year148}"
    outputdate=2025-05-28
    year=2025
    day_of_year=148
  1. year ← 2024, date ← 2024-05-28, iso ← 2024-05-28, day_of_year ← 149

    1require "date"23year→ 2024 = 20244date→ 2024-05-28 = Date.new(year2024, 5, 28)56iso→ 2024-05-28 = date.iso86012024-05-287day_of_year→ 149 = date.yday14989puts "date=#{iso2024-05-28}"10puts "year=#{date.year2024}"11puts "day_of_year=#{day_of_year149}"
    outputdate=2024-05-28
    year=2024
    day_of_year=149
  1. year ← 2026, date ← 2026-05-28, iso ← 2026-05-28, day_of_year ← 148

    1require "date"23year→ 2026 = 20264date→ 2026-05-28 = Date.new(year2026, 5, 28)56iso→ 2026-05-28 = date.iso86012026-05-287day_of_year→ 148 = date.yday14889puts "date=#{iso2026-05-28}"10puts "year=#{date.year2026}"11puts "day_of_year=#{day_of_year148}"
    outputdate=2026-05-28
    year=2026
    day_of_year=148