strftime formats a date with a pattern made from percent codes.

date formatting Numeric date formats are deterministic across locales and environments.

Formatting Dates

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

format = "%Y-%m-%d"
date = Date.new(2025, 7, 4)

formatted = date.strftime(format)
weekday_number = date.wday

puts "format=#{format}"
puts "formatted=#{formatted}"
puts "weekday=#{weekday_number}"
require "date"

format = "%d/%m/%Y"
date = Date.new(2025, 7, 4)

formatted = date.strftime(format)
weekday_number = date.wday

puts "format=#{format}"
puts "formatted=#{formatted}"
puts "weekday=#{weekday_number}"
require "date"

format = "%m-%d-%Y"
date = Date.new(2025, 7, 4)

formatted = date.strftime(format)
weekday_number = date.wday

puts "format=#{format}"
puts "formatted=#{formatted}"
puts "weekday=#{weekday_number}"
  1. format ← %Y-%m-%d, date ← 2025-07-04, formatted ← 2025-07-04, weekday_number ← 5

    1require "date"23format→ %Y-%m-%d = "%Y-%m-%d"  #@format="%d/%m/%Y", "%m-%d-%Y"4date→ 2025-07-04 = Date.new(2025, 7, 4)56formatted→ 2025-07-04 = date.strftime(format)2025-07-047weekday_number→ 5 = date.wday589puts "format=#{format%Y-%m-%d}"10puts "formatted=#{formatted2025-07-04}"11puts "weekday=#{weekday_number5}"
    outputformat=%Y-%m-%d
    formatted=2025-07-04
    weekday=5
  1. format ← %d/%m/%Y, date ← 2025-07-04, formatted ← 04/07/2025, weekday_number ← 5

    1require "date"23format→ %d/%m/%Y = "%d/%m/%Y"4date→ 2025-07-04 = Date.new(2025, 7, 4)56formatted→ 04/07/2025 = date.strftime(format)04/07/20257weekday_number→ 5 = date.wday589puts "format=#{format%d/%m/%Y}"10puts "formatted=#{formatted04/07/2025}"11puts "weekday=#{weekday_number5}"
    outputformat=%d/%m/%Y
    formatted=04/07/2025
    weekday=5
  1. format ← %m-%d-%Y, date ← 2025-07-04, formatted ← 07-04-2025, weekday_number ← 5

    1require "date"23format→ %m-%d-%Y = "%m-%d-%Y"4date→ 2025-07-04 = Date.new(2025, 7, 4)56formatted→ 07-04-2025 = date.strftime(format)07-04-20257weekday_number→ 5 = date.wday589puts "format=#{format%m-%d-%Y}"10puts "formatted=#{formatted07-04-2025}"11puts "weekday=#{weekday_number5}"
    outputformat=%m-%d-%Y
    formatted=07-04-2025
    weekday=5