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.