+-- |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
( format
, parse
import Data.Time
import Data.Time.Calendar.WeekDate
import Data.Time.HTTP.Common
+import Data.Time.RFC822 (showRFC822TimeZone)
import Data.Time.RFC1123.Parsec
-{-
- The syntax for the date is hereby changed to:
-
- date = 1*2DIGIT month 2*4DIGIT
--}
-
+-- |Format a 'ZonedTime' in RFC 1123.
format :: ZonedTime -> String
format zonedTime
= let localTime = zonedTimeToLocalTime zonedTime
, ":"
, show2 (floor (todSec timeOfDay))
, " "
- , show4digitsTZ timeZone
+ , showRFC822TimeZone timeZone
]
+-- |Parse an RFC 1123 date and time string. When the string can't be
+-- parsed, it returns 'Nothing'.
parse :: String -> Maybe ZonedTime
parse src = case P.parse p "" src of
Right zt -> Just zt