Analysera ett datum från en sträng

Haskell:
Analysera ett datum från en sträng

Hur gör man:

Direkt ur lådan erbjuder Haskell grundläggande verktyg för att tolka datum, men genom att använda bibliotek som time för grundläggande funktionalitet och date-parse eller time-parse för mer flexibel tolkning kan uppgiften förenklas avsevärt.

Först, se till att du har tillgång till time-biblioteket; det är ofta inkluderat med GHC, men om du behöver ange det som ett beroende, lägg till time i ditt projekts cabal-fil eller använd cabal install time för att manuellt installera det.

import Data.Time.Format
import Data.Time.Clock
import System.Locale (defaultTimeLocale)

-- Använda time-biblioteket för att tolka ett datum i ett standardformat
parseBasicDate :: String -> Maybe UTCTime
parseBasicDate = parseTimeM True defaultTimeLocale "%Y-%m-%d" 

Exempelanvändning och utdata:

main :: IO ()
main = print $ parseBasicDate "2023-04-01"

-- Utdata: Just 2023-03-31 22:00:00 UTC

För mer komplexa scenarier, där du behöver hantera flera format eller lokaler, kan tredjepartsbibliotek som date-parse vara mer praktiska:

Förutsatt att du har lagt till date-parse i dina beroenden och installerat det, så här kan du använda det:

import Data.Time.Calendar
import Text.Date.Parse (parseDate)

-- Tolkning av en datumsträng med date-parse-biblioteket stöder flera format
parseFlexibleDate :: String -> Maybe Day
parseFlexibleDate = parseDate

Exempelanvändning med date-parse:

main :: IO ()
main = print $ parseFlexibleDate "April 1, 2023"

-- Utdata: Just 2023-04-01

Varje exempel demonstrerar den grundläggande metoden för att ta en sträng och omvandla den till ett användbart datumobjekt i Haskell. Valet mellan att använda time-bibliotekets inbyggda funktioner och att välja en tredjepartslösning som date-parse beror på de specifika behoven hos din applikation, till exempel det utbud av inmatningsformat du behöver hantera.