Päivämäärän jäsennys merkkijonosta

Haskell:
Päivämäärän jäsennys merkkijonosta

Kuinka:

Oletuksena Haskell tarjoaa perustyökalut päivämäärien jäsentämiseen, mutta kirjastojen kuten time käyttäminen ydintoiminnallisuuteen ja date-parse tai time-parse joustavampaan jäsentämiseen voi merkittävästi yksinkertaistaa tehtävää.

Ensimmäiseksi, varmista että sinulla on saatavilla time-kirjasto; se sisältyy usein GHC:hon, mutta jos sinun tarvitsee määritellä se riippuvuudeksi, lisää time projektiisi cabal-tiedostoon tai käytä cabal install time komentoa sen manuaaliseen asentamiseen.

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

-- Käyttämällä time-kirjastoa päivämäärän jäsennykseen standardimuodossa
parseBasicDate :: String -> Maybe UTCTime
parseBasicDate = parseTimeM True defaultTimeLocale "%Y-%m-%d"

Esimerkin käyttö ja tuloste:

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

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

Monimutkaisemmissa skenaarioissa, joissa sinun on käsiteltävä monia muotoja tai kieliäyttöalueita, kolmannen osapuolen kirjastot kuten date-parse voivat olla kätevämpiä:

Olettaen, että olet lisännyt date-parse riippuvuudet ja asentanut sen, tässä on miten saatat käyttää sitä:

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

-- Jäsennetään päivämäärämerkkijono date-parse-kirjaston avulla, joka tukee useita muotoja
parseFlexibleDate :: String -> Maybe Day
parseFlexibleDate = parseDate

Esimerkin käyttö date-parse kanssa:

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

-- Tuloste: Just 2023-04-01

Kukin esimerkki osoittaa peruslähestymistavan ottaa merkkijono ja muuntaa se käytettäväksi päivämääräobjektiksi Haskellissa. Valinta time-kirjaston sisäänrakennettujen funktioiden käytön ja kolmannen osapuolen ratkaisun kuten date-parse välillä riippuu sovelluksesi erityistarpeista, kuten tarvittavien syötemuotojen laajuudesta.