Haskell:
Beregning av en dato i fremtiden eller fortiden
Hvordan gjøre det:
Haskell bruker biblioteket Data.Time
for datooperasjoner. Her er et eksempel på hvordan du finner en fremtidig dato:
import Data.Time
-- Legg til et gitt antall dager til dagens dato og skriv ut den nye datoen
main = do
today <- utctDay <$> getCurrentTime
let futureDate = addDays 10 today
print futureDate
Eksempelutdata vil være avhengig av når koden kjøres. For eksempel:
2023-03-30
For å finne en dato i fortiden:
-- Trekk fra et gitt antall dager fra dagens dato og skriv ut den nye datoen
main = do
today <- utctDay <$> getCurrentTime
let pastDate = addDays (-10) today
print pastDate
Dypdykk:
Tidligere ble datoer ofte beregnet manuelt, noe som førte til feil og inkonsistens. I Haskell gir Data.Time
et robust sett med funksjoner for tidsberegning, reduserer feil og forbedrer internasjonaliseringen.
Alternativer til Data.Time
inkluderer lavnivå biblioteker som time
og old-time
, men disse er mindre praktiske og ofte mer feilutsatte.
For implementeringsdetaljer: addDays
funksjonen tar hensyn til skuddår og andre kalenderanomalier. Den fungerer ved å konvertere en Day
til et såkalt Modified Julian Date-nummer, endrer tallet og konverterer det tilbake.