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: