Ruby:
Sammenlikning av to datoer
Hvordan:
require 'date'
# Opprett to Date objekter
date1 = Date.new(2023, 4, 10)
date2 = Date.new(2023, 4, 12)
# Sammenligne datoer
puts date1 < date2 # Output: true
puts date1 > date2 # Output: false
puts date1 == date2 # Output: false
puts date1.eql?(date2) # Output: false
puts date1.equal?(date2) # Output: false
# Differanse mellom datoer i dager
puts (date2 - date1).to_i # Output: 2Dypdykk
Ruby har hatt innebygd støtte for datoer siden de tidlige dager med Date klassen. Klassen gir metoder for å sammenligne datoer (for eksempel <, >, ==, eql? og equal?) og for å regne ut differansen mellom dem. Differansen returneres som et Rational nummer som kan omformes til et heltall med to_i for å få antall dager.
Som et alternativ til Date klassen, kan man også bruke Time for mer nøyaktige tidspunkt, inkludert klokkeslett. I et distribuert system kan man trenge å ta hensyn til tidszoner, og da er ActiveSupport::TimeWithZone fra Rails en god løsning.
Når det kommer til implementasjon, vurderer Ruby objekt-idene når equal? brukes (to objekter er nøyaktig det samme objektet), mens eql? og == sammenligner verdiene av de to datoene for å finne ut om de representerer samme dag.