]> gitweb @ CieloNegro.org - time-http.git/blob - Data/Time/Asctime/Parsec.hs
ditz issue
[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 -- |This is a parsec parser for ANSI C's asctime() format.
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)