Haskell:
Twee datums vergelijken

Hoe te:

Haskell, stilletjes bekend om zijn puurheid, vereist dat je de juiste bibliotheken gebruikt om over datums te praten. Laten we Data.Time gebruiken.

import Data.Time

-- Definieer twee datums
date1 :: UTCTime
date1 = UTCTime (fromGregorian 2023 4 1) (secondsToDiffTime 0)

date2 :: UTCTime
date2 = UTCTime (fromGregorian 2024 4 2) (secondsToDiffTime 3600)

-- Vergelijk de datums
compareDates :: UTCTime -> UTCTime -> Ordering
compareDates = compare

main :: IO ()
main = doe
    print $ date1 `compareDates` date2 -- Uitvoer zal LT zijn
    print $ date2 `compareDates` date1 -- Uitvoer zal GT zijn
    print $ date1 `compareDates` date1 -- Uitvoer zal EQ zijn

Rechttoe rechtaan, toch? LT voor minder dan, GT voor groter dan, en EQ voor gelijk.

Diepgang

Vroeger was de tijdafhandeling in Haskell niet zo soepel. We hebben onze huidige gemakken te danken aan de ontwikkeling van de Data.Time bibliotheek door de jaren heen. Het geeft ons UTCTime, een blije ondubbelzinnige aanduiding van tijd.

Alternatieven? Zeker. Je vindt misschien Data.Time.Calendar en Data.Time.Clock nuttig voor specifieke scenario’s. Er is ook de oude time bibliotheek voor degenen die nostalgisch zijn of vastzitten met verouderde code.

Nu, de details: Het vergelijken van datums in Haskell hangt af van UTCTime die een dag (Day) en een tijd (DiffTime of NominalDiffTime) combineert. Het is de compare functie die het zware werk doet, een net lid van de Ord klasse, waardoor we >, <, == en meer kunnen gebruiken. Onthoud gewoon dat Haskell houdt van typeveiligheid. Zorg ervoor dat je altijd appels met appels vergelijkt, of in ons geval, UTCTime met UTCTime.

Zie Ook

Duik dieper of zoek hulp met deze: