X-Git-Url: http://git.cielonegro.org/gitweb.cgi?a=blobdiff_plain;f=Data%2FTime%2FAsctime%2FParsec.hs;fp=Data%2FTime%2FAsctime%2FParsec.hs;h=3cff94ca42b3fab4e737d9c188df4f893b312ab8;hb=e90df736d33162bb7ade70cb6fe1372a28af62ff;hp=0000000000000000000000000000000000000000;hpb=269a28dfe8b08af854f7217bbe9c141c9c18f1ec;p=time-http.git diff --git a/Data/Time/Asctime/Parsec.hs b/Data/Time/Asctime/Parsec.hs new file mode 100644 index 0000000..3cff94c --- /dev/null +++ b/Data/Time/Asctime/Parsec.hs @@ -0,0 +1,34 @@ +{-# LANGUAGE FlexibleContexts #-} +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)