Timp și Date Calendaristice în Ruby: Time, Date și Formatare cu strftime în Ruby

Ghid complet pentru manipularea timpului în Ruby: diferența dintre clasele Time și Date, calculul intervalelor, zone de fus orar (UTC) și formatarea șirurilor cu strftime.

Sintaxă
Time.now; Time.now.strftime("%Y-%m-%d %H:%M:%S"); Date.today

În Ruby, timpul și datele sunt reprezentate prin clasa încorporată Time (care gestionează secunde, nanosecunde și fusuri orare) și biblioteca standard date (clasele Date și DateTime).

Manipularea timpului cu Time și formatare conform standardelor
# Timpul curent în fusul orar local și UTC:
acum = Time.now
acum_utc = acum.utc

puts "Local: #{acum}"
puts "UTC:   #{acum_utc}"

# Formatare personalizată cu strftime:
# %Y = An 4 cifre, %m = Lună 2 cifre, %d = Zi 2 cifre
# %H = Ora 24h, %M = Minute, %S = Secunde
format_iso = acum.strftime("%Y-%m-%dT%H:%M:%SZ")
format_romanesc = acum.strftime("%d.%m.%Y la ora %H:%M")

puts "Format ISO 8601:  #{format_iso}"
puts "Format Românesc:  #{format_romanesc}"

# Aritmetica pe secunde:
peste_o_ora = acum + 3600
ieri = acum - (24 * 3600)
puts "Peste o oră va fi: #{peste_o_ora.strftime('%H:%M:%S')}"
Calculul zilelor calendaristice cu biblioteca Date
require "date"

azi = Date.today
anul_nou = Date.new(2027, 1, 1)

zile_ramase = (anul_nou - azi).to_i
puts "Au mai rămas #{zile_ramase} zile până la Anul Nou!"