Haskell:
Comparer deux dates
How to:
Comparons deux dates en Haskell. On va utiliser time
qui est une bibliothèque puissante pour manipuler les dates et les heures.
import Data.Time
-- Définissons deux dates
date1 = fromGregorian 2023 3 14 -- 14 mars 2023
date2 = fromGregorian 2021 6 18 -- 18 juin 2021
-- Comparons les dates
compareDates :: Day -> Day -> Ordering
compareDates = compare
-- Testons la fonction
main :: IO ()
main = do
let result = compareDates date1 date2
print result -- Cela affichera GT parce que date1 est après date2
Sortie attendue :
GT
Deep Dive
Comparer deux dates n’est pas nouveau. Dès qu’on a eu des calendriers, on a eu besoin de comparer les dates. En Haskell, Data.Time
est le choix standard depuis la sortie de la version 1.0 de la bibliothèque en 2006. La fonction compare
fournit une comparaison générique, mais pour les dates, Data.Time
offre aussi des fonctions plus spécifiques comme diffDays
pour obtenir le nombre de jours entre deux dates. Les alternatives incluent l’utilisation de bibliothèques tierces comme thyme
, mais time
reste le choix le plus robuste et le plus intégré dans l’écosystème Haskell.
See Also
- Une bonne documentation sur
Data.Time
: http://hackage.haskell.org/package/time-1.9.3/docs/Data-Time.html - Guide sur les types de date et d’heure en Haskell: https://www.stephendiehl.com/posts/haskell_2017.html#data.time
- Pour comprendre en profondeur la manipulation de date et heure : https://en.wikibooks.org/wiki/Haskell/Understanding_monads/IO