Haskell:
Comparando duas datas
Como Fazer:
No Haskell, você pode usar a biblioteca Data.Time
para trabalhar com datas. Aqui está um exemplo simples:
import Data.Time
compareDates :: IO ()
compareDates = do
let date1 = fromGregorian 2023 3 14 -- 14 de Março de 2023
let date2 = fromGregorian 2023 10 31 -- 31 de Outubro de 2023
putStrLn $ "Comparing " ++ show date1 ++ " and " ++ show date2
case compare date1 date2 of
LT -> putStrLn "A primeira data é mais antiga."
GT -> putStrLn "A primeira data é mais recente."
EQ -> putStrLn "As datas são iguais."
main :: IO ()
main = compareDates
Saída de amostra:
Comparing 2023-03-14 and 2023-10-31
A primeira data é mais antiga.
Imersão Profunda:
Comparar datas é um conceito tão antigo quanto a própria noção de tempo. Em Haskell, a forma de representar datas e horários foi estandardizada com a Data.Time
na versão 6.12.1 do GHC (Glasgow Haskell Compiler) em 2009. Antes disso, as bibliotecas podiam variar e não havia um padrão claro.
As alternativas incluem escrever sua própria função de comparação (não recomendado, já que tratar casos como anos bissextos pode ser complicado), ou usar bibliotecas antigas, como old-time
(também não recomendado por ser obsoleta). A biblioteca Data.Time.Calendar
provê fromGregorian
para criar datas, e o tipo Day
suporta diretamente as operações de comparação através da classe Ord
.
Na implementação, a comparação de datas é geralmente feita convertendo ambas para um formato numérico consistente, como a contagem de dias desde uma data de referência, e então comparando esses números.
Veja Também:
- Hackage - Data.Time: documentação oficial da biblioteca
Data.Time
. - GHC User’s Guide: guia do usuário GHC, que tem detalhes sobre as versões do compilador e bibliotecas inclusas.
- Haskell.org: o site oficial de Haskell, contendo muitos recursos, tutoriais e documentações para aprofundar conhecimentos na linguagem.
- Learn You a Haskell for Great Good: um guia divertido e informativo para aprender Haskell.