Analiza składniowa daty z łańcucha znaków

Haskell:
Analiza składniowa daty z łańcucha znaków

Jak to zrobić:

Od samego początku, Haskell oferuje podstawowe narzędzia do przetwarzania dat, ale wykorzystanie bibliotek takich jak time dla podstawowej funkcjonalności oraz date-parse lub time-parse dla bardziej elastycznego przetwarzania może znacząco uprościć zadanie.

Najpierw upewnij się, że masz dostępną bibliotekę time; jest ona często dołączana do GHC, ale jeśli musisz określić ją jako zależność, dodaj time do pliku cabal Twojego projektu lub użyj cabal install time, aby ręcznie ją zainstalować.

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

-- Używanie biblioteki time do przetworzenia daty w standardowym formacie
parseBasicDate :: String -> Maybe UTCTime
parseBasicDate = parseTimeM True defaultTimeLocale "%Y-%m-%d" 

Przykład użycia i wynik:

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

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

Dla bardziej złożonych scenariuszy, gdy musisz obsługiwać wiele formatów lub lokalizacji, biblioteki stron trzecich takie jak date-parse mogą być bardziej wygodne:

Zakładając, że dodałeś date-parse do swoich zależności i zainstalowałeś je, oto jak możesz ich użyć:

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

-- Przetwarzanie ciągu daty z biblioteką date-parse obsługuje wiele formatów
parseFlexibleDate :: String -> Maybe Day
parseFlexibleDate = parseDate

Przykład użycia z date-parse:

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

-- Wynik: Just 2023-04-01

Każdy przykład demonstruje podstawowe podejście do przekształcania ciągu znaków w użyteczny obiekt daty w Haskellu. Wybór między korzystaniem z wbudowanych funkcji biblioteki time a opcją rozwiązania stron trzecich jak date-parse zależy od konkretnych potrzeb Twojej aplikacji, takich jak zakres formatów wejściowych, które musisz obsłużyć.