module Fake.Provider.DateTime where
import Data.Time
import Fake.Combinators
import Fake.Types
utcBetween :: UTCTime -> UTCTime -> FGen UTCTime
utcBetween from to = do
delta <- fromRange (0 :: Double, realToFrac $ diffUTCTime to from)
return $ addUTCTime (realToFrac delta) from
dayBetween :: Day -> Day -> FGen Day
dayBetween from to = do
delta <- fromRange (0, diffDays to from)
return $ addDays delta from
dayBetweenYears :: Integer -> Integer -> FGen Day
dayBetweenYears ystart yend =
fakeEnumFromTo (fromGregorian ystart 1 1) (fromGregorian yend 12 31)
timeBetweenHours :: Int -> Int -> FGen DiffTime
timeBetweenHours hstart hend = secondsToDiffTime <$> fromRange (fromIntegral from, fromIntegral to)
where
from = hstart * 3600
to = hend * 3599
utcBetweenYears :: Integer -> Integer -> FGen UTCTime
utcBetweenYears ystart yend = UTCTime <$> dayBetweenYears ystart yend <*> timeBetweenHours 0 24