Haskell:
Kahden päivämäärän vertailu

How to:

import Data.Time

-- Oletetaan kaksi päivämäärää
date1 :: UTCTime
date1 = UTCTime (fromGregorian 2023 3 25) (secondsToDiffTime 0)

date2 :: UTCTime
date2 = UTCTime (fromGregorian 2023 3 26) (secondsToDiffTime 0)

-- Vertaillaan päivämääriä
compareDates :: UTCTime -> UTCTime -> Ordering
compareDates = compare

main :: IO ()
main = do
  putStrLn $ "Vertailu tulos: " ++ show (compareDates date1 date2)

Esimerkin tulostus:

Vertailu tulos: LT

Deep Dive

Haskellissa päivämäärien vertailu hyödyntää Data.Time-kirjastoa, joka on osa laajempaa time-pakettia. Päivämäärät esitetään UTCTime-tyypin avulla, joka kuvaa yleistä koordinoitua aikaa. Historiallisesti, päivämäärien käsittely on kehittynyt ohjelmoinnissa, mukana monia eri kirjastoja ja lähestymistapoja. time-kirjasto on kuitenkin nykyään yleisimmin käytetty Haskellin standardikirjastossa ajan käsittelyyn.

Käytännöllisesti, compare-funktio auttaa meitä suorittamaan vertailun, palauttaen Ordering-tyypin arvon (LT pienempi, EQ yhtä suuri, GT suurempi). Tässä yksinkertaisuus on voimaa; ei tarvitse uudelleen keksiä pyörää, vaan voimme luottaa standardikirjaston tarjoamiin välineisiin.

Muita vaihtoehtoja päivämäärien vertailuun on olemassa, esimerkiksi time-lens kirjasto, joka tarjoaa monimutkaisempia ajan manipulointityökaluja. Mutta useimpiin tarpeisiin Data.Time riittää mainiosti.

See Also