Safe Haskell | None |
---|---|
Language | Haskell98 |
Data.Time.Units
Description
This module defines types for many useful time periods, as well as mechanisms for converting between them.
Synopsis
- class TimeUnit a where
- toMicroseconds :: a -> Integer
- fromMicroseconds :: Integer -> a
- data Attosecond
- data Femtosecond
- data Picosecond
- data Nanosecond
- data Microsecond
- data Millisecond
- data Second
- data Minute
- data Hour
- data Day
- data Week
- data Fortnight
- addTime :: (TimeUnit a, TimeUnit b, TimeUnit c) => a -> b -> c
- subTime :: (TimeUnit a, TimeUnit b, TimeUnit c) => a -> b -> c
- convertUnit :: (TimeUnit a, TimeUnit b) => a -> b
- getCPUTimeWithUnit :: TimeUnit a => IO a
Documentation
class TimeUnit a where Source #
A generic class that describes all the units of time. We use microseconds here because that tends to be what GHC (at least) tends to use as its system-level minimum tick size.
Methods
toMicroseconds :: a -> Integer Source #
Converts the given unit of time into microseconds, flooring the value if it comes to a fractional number of microseconds. (In other words: be careful, you may lose precision!)
fromMicroseconds :: Integer -> a Source #
Converts the given number of microseconds into the unit of time, flooring the value if it comes to a fraction number of the given unit. (In other words: be careful, you may lose precision!)
Instances
data Attosecond Source #
Instances
data Femtosecond Source #
Instances
data Picosecond Source #
Instances
data Nanosecond Source #
Instances
data Microsecond Source #
Instances
data Millisecond Source #
Instances
Instances
Enum Second Source # | |
Defined in Data.Time.Units | |
Eq Second Source # | |
Integral Second Source # | |
Data Second Source # | |
Defined in Data.Time.Units Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Second -> c Second gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Second dataTypeOf :: Second -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Second) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Second) gmapT :: (forall b. Data b => b -> b) -> Second -> Second gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Second -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Second -> r gmapQ :: (forall d. Data d => d -> u) -> Second -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Second -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Second -> m Second gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Second -> m Second gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Second -> m Second | |
Num Second Source # | |
Ord Second Source # | |
Read Second Source # | |
Defined in Data.Time.Units | |
Real Second Source # | |
Defined in Data.Time.Units Methods toRational :: Second -> Rational | |
Show Second Source # | |
Ix Second Source # | |
TimeUnit Second Source # | |
Defined in Data.Time.Units |
Instances
Enum Minute Source # | |
Defined in Data.Time.Units | |
Eq Minute Source # | |
Integral Minute Source # | |
Data Minute Source # | |
Defined in Data.Time.Units Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Minute -> c Minute gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Minute dataTypeOf :: Minute -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Minute) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Minute) gmapT :: (forall b. Data b => b -> b) -> Minute -> Minute gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Minute -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Minute -> r gmapQ :: (forall d. Data d => d -> u) -> Minute -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Minute -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Minute -> m Minute gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Minute -> m Minute gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Minute -> m Minute | |
Num Minute Source # | |
Ord Minute Source # | |
Read Minute Source # | |
Defined in Data.Time.Units | |
Real Minute Source # | |
Defined in Data.Time.Units Methods toRational :: Minute -> Rational | |
Show Minute Source # | |
Ix Minute Source # | |
TimeUnit Minute Source # | |
Defined in Data.Time.Units |
Instances
Enum Hour Source # | |
Eq Hour Source # | |
Integral Hour Source # | |
Data Hour Source # | |
Defined in Data.Time.Units Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Hour -> c Hour gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Hour dataTypeOf :: Hour -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Hour) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Hour) gmapT :: (forall b. Data b => b -> b) -> Hour -> Hour gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Hour -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Hour -> r gmapQ :: (forall d. Data d => d -> u) -> Hour -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Hour -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Hour -> m Hour gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Hour -> m Hour gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Hour -> m Hour | |
Num Hour Source # | |
Ord Hour Source # | |
Read Hour Source # | |
Defined in Data.Time.Units | |
Real Hour Source # | |
Defined in Data.Time.Units Methods toRational :: Hour -> Rational | |
Show Hour Source # | |
Ix Hour Source # | |
TimeUnit Hour Source # | |
Defined in Data.Time.Units |
Instances
Enum Day Source # | |
Eq Day Source # | |
Integral Day Source # | |
Data Day Source # | |
Defined in Data.Time.Units Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Day -> c Day gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Day dataTypeOf :: Day -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Day) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Day) gmapT :: (forall b. Data b => b -> b) -> Day -> Day gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Day -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Day -> r gmapQ :: (forall d. Data d => d -> u) -> Day -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Day -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Day -> m Day gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Day -> m Day gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Day -> m Day | |
Num Day Source # | |
Ord Day Source # | |
Read Day Source # | |
Defined in Data.Time.Units | |
Real Day Source # | |
Defined in Data.Time.Units Methods toRational :: Day -> Rational | |
Show Day Source # | |
Ix Day Source # | |
TimeUnit Day Source # | |
Defined in Data.Time.Units |
Instances
Enum Week Source # | |
Eq Week Source # | |
Integral Week Source # | |
Data Week Source # | |
Defined in Data.Time.Units Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Week -> c Week gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Week dataTypeOf :: Week -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Week) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Week) gmapT :: (forall b. Data b => b -> b) -> Week -> Week gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Week -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Week -> r gmapQ :: (forall d. Data d => d -> u) -> Week -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Week -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Week -> m Week gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Week -> m Week gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Week -> m Week | |
Num Week Source # | |
Ord Week Source # | |
Read Week Source # | |
Defined in Data.Time.Units | |
Real Week Source # | |
Defined in Data.Time.Units Methods toRational :: Week -> Rational | |
Show Week Source # | |
Ix Week Source # | |
TimeUnit Week Source # | |
Defined in Data.Time.Units |
Instances
Enum Fortnight Source # | |
Defined in Data.Time.Units | |
Eq Fortnight Source # | |
Integral Fortnight Source # | |
Defined in Data.Time.Units | |
Data Fortnight Source # | |
Defined in Data.Time.Units Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Fortnight -> c Fortnight gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Fortnight toConstr :: Fortnight -> Constr dataTypeOf :: Fortnight -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Fortnight) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Fortnight) gmapT :: (forall b. Data b => b -> b) -> Fortnight -> Fortnight gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Fortnight -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Fortnight -> r gmapQ :: (forall d. Data d => d -> u) -> Fortnight -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Fortnight -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Fortnight -> m Fortnight gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Fortnight -> m Fortnight gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Fortnight -> m Fortnight | |
Num Fortnight Source # | |
Ord Fortnight Source # | |
Defined in Data.Time.Units | |
Read Fortnight Source # | |
Defined in Data.Time.Units | |
Real Fortnight Source # | |
Defined in Data.Time.Units Methods toRational :: Fortnight -> Rational | |
Show Fortnight Source # | |
Ix Fortnight Source # | |
Defined in Data.Time.Units Methods range :: (Fortnight, Fortnight) -> [Fortnight] index :: (Fortnight, Fortnight) -> Fortnight -> Int unsafeIndex :: (Fortnight, Fortnight) -> Fortnight -> Int inRange :: (Fortnight, Fortnight) -> Fortnight -> Bool rangeSize :: (Fortnight, Fortnight) -> Int unsafeRangeSize :: (Fortnight, Fortnight) -> Int | |
TimeUnit Fortnight Source # | |
Defined in Data.Time.Units Methods toMicroseconds :: Fortnight -> Integer Source # fromMicroseconds :: Integer -> Fortnight Source # |
addTime :: (TimeUnit a, TimeUnit b, TimeUnit c) => a -> b -> c Source #
Add two times together to get a useful third time unit. As per usual, you'll want to make sure that you are careful regarding precision. This function goes through microseconds as an intermediary form.
subTime :: (TimeUnit a, TimeUnit b, TimeUnit c) => a -> b -> c Source #
Subtract the second time from the first, to get a useful third time unit. As per usual, you'll want to make sure that you are careful regarding precision. This function goes through microseconds as an intermediary form.
convertUnit :: (TimeUnit a, TimeUnit b) => a -> b Source #
Convert one time unit to another. Note that if you move from a smaller time unit to a larger one, or between two time units smaller than a microsecond, you will lose precision.
getCPUTimeWithUnit :: TimeUnit a => IO a Source #
Get the current CPU time in your favorite units. This is probably not very useful in itself, but is likely useful for comparison purposes ...