{-# 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