1 {-# LANGUAGE FlexibleContexts #-}
2 module Data.Time.RFC1123.Internal
7 import Data.Attoparsec.Char8
10 import Data.Time.Calendar.WeekDate
11 import Data.Time.HTTP.Common
12 import Data.Time.RFC822.Internal
14 -- |Parse an RFC 1123 date and time string.
15 rfc1123DateAndTime :: Parser ZonedTime
16 rfc1123DateAndTime = dateTime
18 dateTime :: Parser ZonedTime
19 dateTime = do weekDay <- optionMaybe $
20 do w <- shortWeekDayNameP
26 -> return () -- No day in week exists.
28 -> assertWeekDayIsGood givenWD gregDay
29 (tod, timeZone) <- rfc822time
30 let lt = LocalTime gregDay tod
31 zt = ZonedTime lt timeZone
34 date :: Stream s m Char => ParsecT s u m Day
35 date = do day <- read2
37 month <- shortMonthNameP
41 assertGregorianDateIsGood year month day