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