Haskell:
Calcolo di una data futura o passata
How to:
In Haskell, si può usare la libreria time
per maneggiare date. Ecco un esempio per calcolare una data 10 giorni nel futuro dalla data corrente:
import Data.Time
import Data.Time.Calendar
addDaysExample :: IO ()
addDaysExample = do
today <- utctDay <$> getCurrentTime
let tenDaysLater = addDays 10 today
putStrLn $ "Oggi è: " ++ show today
putStrLn $ "Tra 10 giorni sarà: " ++ show tenDaysLater
-- Esempio di output:
-- Oggi è: 2023-04-21
-- Tra 10 giorni sarà: 2023-05-01
Per andare indietro nel tempo, usiamo addDays
con un numero negativo:
subtractDaysExample :: IO ()
subtractDaysExample = do
today <- utctDay <$> getCurrentTime
let tenDaysBefore = addDays (-10) today
putStrLn $ "Oggi è: " ++ show today
putStrLn $ "10 giorni fa era: " ++ show tenDaysBefore
-- Esempio di output:
-- Oggi è: 2023-04-21
-- 10 giorni fa era: 2023-04-11
Deep Dive:
Historically, dates in programming had to account for various calendars and time zones, a complexity Haskell’s time
library manages well. Alternatives include the older Data.Time.Calendar
module or external libraries like thyme
.
La time
library segue gli standard UTC e può gestire anche i secondi bisestili. Usa tipi di dati immutabili che aiutano a prevenire errori comuni in altri linguaggi, come le modifiche non intenzionali dello stato.
Per quanto riguarda l’implementazione, Haskell appoggia la semantica funzionale. Funzioni come addDays
sono pure e non hanno effetti collaterali, rendendole componibili e affidabili per calcoli di tempo ripetibili.
See Also:
Per maggiori informazioni, collegatevi alle seguenti risorse: