time-http-0.1: Data/Time/HTTP/Parsec.hs
{-# LANGUAGE FlexibleContexts #-}
module Data.Time.HTTP.Parsec
( rfc2616DateAndTime
)
where
import Control.Monad
import Data.Time
import Data.Time.RFC1123.Parsec
import Data.Time.RFC733.Parsec
import Data.Time.Asctime.Parsec
import Text.Parsec
-- |This is a parsec parser for date and time formats allowed in
-- HTTP\/1.1 (RFC 2616).
rfc2616DateAndTime :: Stream s m Char => ParsecT s u m UTCTime
rfc2616DateAndTime
= choice [ liftM zonedTimeToUTC $ try rfc1123DateAndTime
, liftM zonedTimeToUTC $ try rfc733DateAndTime
, liftM (localTimeToUTC utc) $ asctime
]