time-http-0.2: Data/Time/RFC1123.hs
{-# LANGUAGE
UnicodeSyntax
#-}
-- |This module provides functions to parse and format RFC 1123 date
-- and time formats.
--
-- The format is basically same as RFC 822, but the syntax for @date@
-- is changed from:
--
-- > year ::= 2DIGIT
--
-- to:
--
-- > year ::= 4DIGIT
module Data.Time.RFC1123
( -- * Formatting
toAscii
, toAsciiBuilder
-- * Parsing
, fromAscii
, rfc1123DateAndTime
)
where
import Data.Ascii (Ascii)
import qualified Data.Ascii as A
import qualified Data.Attoparsec.Char8 as P
import Data.Time
import Data.Time.RFC1123.Internal
import Prelude.Unicode
-- |Convert a 'ZonedTime' to RFC 1123 date and time string.
toAscii ∷ ZonedTime → Ascii
toAscii = A.fromAsciiBuilder ∘ toAsciiBuilder
-- |Parse an RFC 1123 date and time string. When the string can't be
-- parsed, it returns @'Left' err@.
fromAscii ∷ Ascii → Either String ZonedTime
fromAscii = P.parseOnly p ∘ A.toByteString
where
p = do zt ← rfc1123DateAndTime
P.endOfInput
return zt