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 (defaultTimeLocale) toString' :: (TextualMonoid t) => t -> String toString' :: t -> String toString' = (t -> String) -> t -> String forall t. TextualMonoid t => (t -> String) -> t -> String toString (String -> (Char -> String) -> Maybe Char -> String forall b a. b -> (a -> b) -> Maybe a -> b maybe String "?" (Char -> String -> String forall a. a -> [a] -> [a] :[]) (Maybe Char -> String) -> (t -> Maybe Char) -> t -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . t -> Maybe Char forall t. TextualMonoid t => t -> Maybe Char characterPrefix) parseTimeUsing :: (TextualMonoid t, TextualMonoid t') => [t] -> t' -> Maybe ZonedTime parseTimeUsing :: [t] -> t' -> Maybe ZonedTime parseTimeUsing [t] formats t' t = (Maybe ZonedTime -> Maybe ZonedTime -> Maybe ZonedTime) -> Maybe ZonedTime -> [Maybe ZonedTime] -> Maybe ZonedTime forall (t :: * -> *) a b. Foldable t => (a -> b -> b) -> b -> t a -> b foldr Maybe ZonedTime -> Maybe ZonedTime -> Maybe ZonedTime forall (f :: * -> *) a. Alternative f => f a -> f a -> f a (<|>) Maybe ZonedTime forall a. Maybe a Nothing ([Maybe ZonedTime] -> Maybe ZonedTime) -> [Maybe ZonedTime] -> Maybe ZonedTime forall a b. (a -> b) -> a -> b $ (t -> Maybe ZonedTime) -> [t] -> [Maybe ZonedTime] forall a b. (a -> b) -> [a] -> [b] map t -> Maybe ZonedTime forall t. TextualMonoid t => t -> Maybe ZonedTime parse [t] formats where parse :: (TextualMonoid t) => t -> Maybe ZonedTime parse :: t -> Maybe ZonedTime parse t format = TimeLocale -> String -> String -> Maybe ZonedTime forall t. ParseTime t => TimeLocale -> String -> String -> Maybe t parseTime TimeLocale defaultTimeLocale (t -> String forall t. TextualMonoid t => t -> String toString' t format) (t' -> String forall t. TextualMonoid t => t -> String toString' t' t)