packages feed

timerep-2.0.1.0: Data/Time/Util.hs

module Data.Time.Util where

import           Control.Applicative

import           Data.Function
import           Data.Monoid         (mempty)
import           Data.Monoid.Textual hiding (foldr, map)
import           Data.Time
import           Data.Time.Format    (ParseTime, defaultTimeLocale)


toString' :: (TextualMonoid t) => t -> String
toString' = toString (maybe "?" (:[]) . characterPrefix)

parseTimeUsing :: (TextualMonoid t, TextualMonoid t', ParseTime time) => [t] -> t' -> Maybe time
parseTimeUsing formats t = foldr (<|>) Nothing $ map parse formats
    where parse format = parseTimeM True defaultTimeLocale (toString' format) (toString' t)