Sammenlikning av to datoer

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: 2

Dypdykk

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.

Se Også: