Haskell:
文字列から日付をパースする
どのようにして:
Haskellは、箱から出してすぐに日付を解析するための基本的なツールを提供していますが、timeライブラリをコア機能として使ったり、より柔軟な解析のためにdate-parseやtime-parseのようなライブラリを活用することで、この作業を大幅に簡素化できます。
まず、timeライブラリが利用可能であることを確認してください。それはしばしばGHCに含まれていますが、依存関係として指定する必要がある場合は、プロジェクトのcabalファイルにtimeを追加するか、cabal install timeを使用して手動でインストールしてください。
import Data.Time.Format
import Data.Time.Clock
import System.Locale (defaultTimeLocale)
-- time ライブラリを使って標準フォーマットの日付を解析する
parseBasicDate :: String -> Maybe UTCTime
parseBasicDate = parseTimeM True defaultTimeLocale "%Y-%m-%d" 使用例と出力:
main :: IO ()
main = print $ parseBasicDate "2023-04-01"
-- 出力: Just 2023-03-31 22:00:00 UTC複数のフォーマットやロケールを扱う必要があるより複雑なシナリオの場合、date-parseのようなサードパーティライブラリを使う方が便利です:
date-parseを依存関係に追加してインストールしたと仮定すると、ここに使用例があります:
import Data.Time.Calendar
import Text.Date.Parse (parseDate)
-- date-parse ライブラリを使って日付文字列を解析すると、複数のフォーマットをサポートする
parseFlexibleDate :: String -> Maybe Day
parseFlexibleDate = parseDatedate-parseを使った使用例:
main :: IO ()
main = print $ parseFlexibleDate "April 1, 2023"
-- 出力: Just 2023-04-01それぞれの例は、文字列を取り、それをHaskellで使える日付オブジェクトに変換する基本的なアプローチを示しています。timeライブラリの組み込み機能を使うか、date-parseのようなサードパーティの解決策を選ぶかは、扱う必要のある入力フォーマットの範囲など、アプリケーションの特定のニーズに依存します。