--- /dev/null
+{-# LANGUAGE FlexibleContexts #-}
+module Data.Time.Asctime.Internal
+ ( asctime
+ )
+ where
+import Control.Monad
+import Data.Fixed
+import Data.Time
+import Data.Time.Calendar.WeekDate
+import Data.Time.HTTP.Common
+
+-- |This is a parsec parser for ANSI C's asctime() format.
+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)