Haskell:
Jämföra två datum

Så här gör du:

För att jämföra datum i Haskell, kan du använda Data.Time biblioteket. Se exempel nedan:

import Data.Time

-- Skapa två datum
date1 :: UTCTime
date1 = UTCTime (fromGregorian 2023 4 14) (secondsToDiffTime 0)

date2 :: UTCTime
date2 = UTCTime (fromGregorian 2023 5 18) (secondsToDiffTime 0)

-- Jämför de två datumen
compareDates :: UTCTime -> UTCTime -> Ordering
compareDates = compare

-- Exempelanvändning och utmatning
main :: IO ()
main = do
    print $ date1 == date2  -- False
    print $ date1 /= date2  -- True
    print $ date1 < date2   -- True
    print $ compareDates date1 date2  -- LT (Less Than)

Fördjupning

I Haskell, har Data.Time biblioteket blivit standard för datum- och tidsmanipulationer sedan det introducerades. Det finns alternativ, som time-recurrence för att hantera återkommande händelser, men Data.Time är mest komplett för datumjämförelser.

Jämförelsen bygger på UTCTime, vilket är en tidspunkt i koordinerad universell tid (UTC). Detta innebär att jämförelserna är tidszonsoberoende, vilket är praktiskt för konsistent beteende oavsett användarens plats.

Implementeringen av compare i bakgrunden använder operatörerna ==, /=, <, <=, >, >=, som är del av Ord typeklassen, vilket ger en kraftfull och generell jämförelsemekanism i Haskell.

Se även