o-clock-0.1.0: Type-safe time library.

Safe HaskellNone
LanguageHaskell2010

Time.Timestamp

Contents

Description

This module introduces Timestamp data type and corresponding functions for operations with time.

Synopsis

Documentation

fromUnixTime :: Real a => a -> Timestamp Source #

Converts unix time to Timestamp.

timeDiff :: forall (unit :: Rat). KnownDivRat Second unit => Timestamp -> Timestamp -> (Ordering, Time unit) Source #

Returns the result of comparison of two Timestamps and the Time of that difference of given time unit.

>>> timeDiff @Second (Timestamp 4) (Timestamp 2)
(GT,2s)
>>> timeDiff @Minute (Timestamp 4) (Timestamp 2)
(GT,1/30m)
>>> timeDiff @Second (Timestamp 2) (Timestamp 4)
(LT,2s)
>>> timeDiff @Minute (Timestamp 2) (Timestamp 4)
(LT,1/30m)

timeAdd :: forall (unit :: Rat). KnownDivRat unit Second => Time unit -> Timestamp -> Timestamp Source #

Returns the result of addition of Time with Timestamp elements.

>>> sec 5 `timeAdd` (Timestamp 4)
Timestamp (9 % 1)
>>> minute 1 `timeAdd` (Timestamp 5)
Timestamp (65 % 1)

timeMul :: forall (unit :: Rat). KnownRat unit => RatioNat -> Time unit -> Time unit Source #

Returns the result of multiplication of two Time elements.

(*:*) :: forall (unit :: Rat). KnownRat unit => RatioNat -> Time unit -> Time unit infixr 7 Source #

Operator version of timeMul.

>>> 3 *:* sec 5
15s
>>> 2 *:* 3 *:* sec 5
30s
>>> 3 *:* 5 *:* 7 :: Time Second
105s
>>> ms 2000 +:+ 2 *:* sec 3
8s

timeDiv :: forall (unit :: Rat). KnownRat unit => Time unit -> Time unit -> RatioNat Source #

Returns the result of division of two Time elements.

(/:/) :: forall (unit :: Rat). KnownRat unit => Time unit -> Time unit -> RatioNat infix 7 Source #

Operator version of timeDiv.

>>> sec 15 /:/ sec 3
5 % 1

Other operators

(+:+) :: forall (unitResult :: Rat) (unitLeft :: Rat). KnownDivRat unitLeft unitResult => Time unitLeft -> Time unitResult -> Time unitResult infixl 6 Source #

Sums times of different units.

>>> minute 1 +:+ sec 1
61s

(-:-) :: forall (unitResult :: Rat) (unitLeft :: Rat). KnownDivRat unitLeft unitResult => Time unitLeft -> Time unitResult -> Time unitResult infixl 6 Source #

Substracts times of different units.

>>> minute 1 -:- sec 1
59s

(-%-) :: forall (unitResult :: Rat) (unitLeft :: Rat). KnownDivRat unitLeft unitResult => Time unitLeft -> Time unitResult -> (Ordering, Time unitResult) infix 6 Source #

Similar to -:- but more safe and returns order in pair with resulting time difference.

>>> sec 5 -%- sec 3
(GT,2s)
>>> sec 5 -%- sec 6
(LT,1s)