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: LTDeep 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
- Haskell
time-kirjaston dokumentaatio: https://hackage.haskell.org/package/time - Haskell
time-lens-kirjasto parempaan ajanhallintaan: https://hackage.haskell.org/package/time-lens - HaskellWiki, ajan ja päivämäärien käsittelystä: https://wiki.haskell.org/Working_with_time