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
- Haskells officiella dokumentation för
Data.Time: https://hackage.haskell.org/package/time-1.9.3/docs/Data-Time.html - Läs mer om
Ordtypeklassen: https://hackage.haskell.org/package/base-4.14.0.0/docs/Prelude.html#t:Ord - Ett djupdyk i tid och datum i Haskell: https://www.schoolofhaskell.com/school/to-infinity-and-beyond/older-but-still-useful/time