]> gitweb @ CieloNegro.org - time-http.git/blob - Data/Time/Asctime/Parsec.hs
3cff94ca42b3fab4e737d9c188df4f893b312ab8
[time-http.git] / Data / Time / Asctime / Parsec.hs
1 {-# LANGUAGE FlexibleContexts #-}
2 module Data.Time.Asctime.Parsec
3     ( asctime
4     )
5     where
6
7 import Control.Monad
8 import Data.Fixed
9 import Data.Time
10 import Data.Time.Calendar.WeekDate
11 import Data.Time.HTTP.Common
12 import Text.Parsec
13
14
15 asctime :: Stream s m Char => ParsecT s u m LocalTime
16 asctime = do weekDay <- shortWeekDayNameP
17              _       <- string ", "
18              month   <- shortMonthNameP
19              _       <- char ' '
20              day     <- read2
21              _       <- char ' '
22              hour    <- read2
23              _       <- char ':'
24              minute  <- read2
25              _       <- char ':'
26              second  <- read2
27              _       <- char ' '
28              year    <- read4
29
30              gregDay <- assertGregorianDateIsGood year month day
31              _       <- assertWeekDayIsGood weekDay gregDay
32              tod     <- assertTimeOfDayIsGood hour minute second
33
34              return (LocalTime gregDay tod)