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ć.