stagen-0.2.1: library/Stagen/Date.hs
module Stagen.Date where
import Data.Functor (void)
import Data.Time.Clock
import Data.Time.Calendar
import Text.Parsec
import Text.Parsec.String
data Date = Date {
dateYear :: Int,
dateMonth :: Int,
dateDay :: Int
} deriving (Show, Eq, Ord)
datePrefix :: Parser Date
datePrefix = do
year <- number
void $ char '-'
month <- number
void $ char '-'
day <- number
void $ char '-'
return (Date year month day)
where
number = fmap read (many1 digit)
showTwoDigits :: (Show a, Num a, Ord a) => a -> String
showTwoDigits n
| n < 10 = '0' : show n
| otherwise = show n
dateToUTCTime :: Date -> UTCTime
dateToUTCTime Date{dateYear,dateMonth,dateDay} = UTCTime (fromGregorian (fromIntegral dateYear) dateMonth dateDay) 0