module Data.Time.Asctime.Parsec
( asctime
)
where
import Control.Monad
import Data.Fixed
import Data.Time
import Data.Time.Calendar.WeekDate
import Data.Time.HTTP.Common
import Text.Parsec
asctime :: Stream s m Char => ParsecT s u m LocalTime
asctime = do weekDay <- shortWeekDayNameP
_ <- string ", "
month <- shortMonthNameP
_ <- char ' '
day <- read2
_ <- char ' '
hour <- read2
_ <- char ':'
minute <- read2
_ <- char ':'
second <- read2
_ <- char ' '
year <- read4
gregDay <- assertGregorianDateIsGood year month day
_ <- assertWeekDayIsGood weekDay gregDay
tod <- assertTimeOfDayIsGood hour minute second
return (LocalTime gregDay tod)