Haskell:
Obtendo a data atual

Como fazer:

A biblioteca padrão do Haskell, base, fornece o módulo Data.Time, que oferece funcionalidades para trabalhar com datas e horas. Veja como usá-lo para obter a data atual:

import Data.Time (getCurrentTime, utctDay)

main :: IO ()
main = do
    now <- getCurrentTime
    let today = utctDay now
    print today

Saída de exemplo:

2023-04-12

Para mais flexibilidade, como formatar a data ou trabalhar com diferentes fusos horários, a biblioteca time é inestimável. Aqui está como você pode formatar a data atual:

import Data.Time

main :: IO ()
main = do
    now <- getCurrentTime
    timezone <- getCurrentTimeZone
    let zoneNow = utcToLocalTime timezone now
    putStrLn $ formatTime defaultTimeLocale "%Y-%m-%d" zoneNow

Isso imprime a data atual no formato YYYY-MM-DD, ajustado ao fuso horário local.

Adicionalmente, para suporte de bibliotecas de terceiros, time é altamente recomendado e frequentemente usado dentro da comunidade Haskell por suas extensas capacidades de manipulação de datas e horas. Os exemplos acima utilizam esta biblioteca.

Se você precisar de manipulação de datas mais abrangente, incluindo análise de strings ou operações aritméticas com datas e horas, explorar funções adicionais dentro de Data.Time será benéfico.