X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=time-http.git;a=blobdiff_plain;f=Data%2FTime%2FAsctime%2FInternal.hs;fp=Data%2FTime%2FAsctime%2FInternal.hs;h=85707c653c6d3d98b0684f9886977741df7212f0;hp=0000000000000000000000000000000000000000;hb=82afb594c5b4254385435491700befcbea185a5d;hpb=b6bd963751a3da2fd2961be19d42a45f4b098b96 diff --git a/Data/Time/Asctime/Internal.hs b/Data/Time/Asctime/Internal.hs new file mode 100644 index 0000000..85707c6 --- /dev/null +++ b/Data/Time/Asctime/Internal.hs @@ -0,0 +1,32 @@ +{-# 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)