Haskell:
Analisando uma data a partir de uma string
Como Fazer:
De imediato, Haskell oferece ferramentas básicas para análise de datas, mas aproveitar bibliotecas como time
para funcionalidades principais e date-parse
ou time-parse
para uma análise mais flexível pode significativamente simplificar a tarefa.
Primeiro, garanta que você tem a biblioteca time
disponível; ela normalmente está incluída com GHC, mas se precisar especificá-la como uma dependência, adicione time
ao arquivo cabal do seu projeto ou use cabal install time
para instalá-la manualmente.
import Data.Time.Format
import Data.Time.Clock
import System.Locale (defaultTimeLocale)
-- Usando a biblioteca time para analisar uma data em um formato padrão
parseBasicDate :: String -> Maybe UTCTime
parseBasicDate = parseTimeM True defaultTimeLocale "%Y-%m-%d"
Exemplo de uso e saída:
main :: IO ()
main = print $ parseBasicDate "2023-04-01"
-- Saída: Just 2023-03-31 22:00:00 UTC
Para cenários mais complexos, onde é necessário lidar com múltiplos formatos ou localidades, bibliotecas de terceiros como date-parse
podem ser mais convenientes:
Assumindo que você adicionou date-parse
às suas dependências e a instalou, eis como você poderia usá-la:
import Data.Time.Calendar
import Text.Date.Parse (parseDate)
-- Analisando uma string de data com a biblioteca date-parse suporta múltiplos formatos
parseFlexibleDate :: String -> Maybe Day
parseFlexibleDate = parseDate
Exemplo de uso com date-parse
:
main :: IO ()
main = print $ parseFlexibleDate "April 1, 2023"
-- Saída: Just 2023-04-01
Cada exemplo demonstra a abordagem fundamental para pegar uma string e transformá-la em um objeto de data utilizável em Haskell. A escolha entre usar as funções integradas da biblioteca time
e optar por uma solução de terceiros como date-parse
depende das necessidades específicas da sua aplicação, como a variedade de formatos de entrada que você precisa manusear.