pact-time-0.3.0.1: Time Library for Pact
CopyrightCopyright © 2021 Kadena LLC.
LicenseMIT
MaintainerLars Kuhtz <lars@kadena.io>
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Pact.Time

Description

A minimal time library for usage with the Pact Smart Contract Language.

The focus of this library is on minimality, performance, and binary level stability. Time is represented as 64-bit integral value that counts nominal micro-seconds since the modified Julian date epoch (MJD). The implementation ignores leap seconds.

While the library can parse date-time values with time zones, internally all date-times are represented as UTC and formatting only supports UTC. Only the default English language locale is supported.

Details about supported formats can be found in the Pact Language Reference.

Synopsis

NominalDiffTime

newtype NominalDiffTime Source #

A time interval as measured by UTC, that does not take leap-seconds into account.

Constructors

NominalDiffTime 

Instances

Instances details
Bounded NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

Enum NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

Show NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Format.Internal

Serialize NominalDiffTime Source #

Serializes NominalDiffTime as 64-bit signed microseconds in little endian encoding.

Instance details

Defined in Pact.Time.Internal

NFData NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

Methods

rnf :: NominalDiffTime -> () #

Eq NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

Ord NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

AdditiveAbelianSemigroup NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

AdditiveGroup NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

AdditiveMonoid NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

AdditiveSemigroup NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

toMicroseconds :: NominalDiffTime -> Micros Source #

Convert from NominalDiffTime to a 64-bit representation of microseconds.

fromMicroseconds :: Micros -> NominalDiffTime Source #

Convert from a 64-bit representation of microseconds to NominalDiffTime.

toSeconds :: NominalDiffTime -> Decimal Source #

Convert from NominalDiffTime to a DecimalRaw representation of seconds.

fromSeconds :: Decimal -> NominalDiffTime Source #

Convert from DecimalRaw representation of seconds to NominalDiffTime.

The result is rounded using banker's method, i.e. remainders of 0.5 a rounded to the next even integer.

nominalDay :: NominalDiffTime Source #

The nominal length of a day: precisely 86400 SI seconds.

UTCTime

data UTCTime Source #

UTCTime with microseconds precision. Internally it is represented as 64-bit count nominal microseconds since MJD Epoch.

This implementation ignores leap seconds. Time differences are measured as nominal time, with a nominal day having exaxtly 24 * 60 * 60 SI seconds. As a consequence the difference between two dates as computed by this module is generally equal or smaller than what is actually measured by a clock.

Instances

Instances details
FromJSON UTCTime Source # 
Instance details

Defined in Pact.Time.Format.Internal

ToJSON UTCTime Source # 
Instance details

Defined in Pact.Time.Format.Internal

Generic UTCTime Source # 
Instance details

Defined in Pact.Time.Internal

Associated Types

type Rep UTCTime :: Type -> Type #

Methods

from :: UTCTime -> Rep UTCTime x #

to :: Rep UTCTime x -> UTCTime #

Read UTCTime Source # 
Instance details

Defined in Pact.Time.Format.Internal

Show UTCTime Source # 
Instance details

Defined in Pact.Time.Format.Internal

Serialize UTCTime Source # 
Instance details

Defined in Pact.Time.Internal

NFData UTCTime Source # 
Instance details

Defined in Pact.Time.Internal

Methods

rnf :: UTCTime -> () #

Eq UTCTime Source # 
Instance details

Defined in Pact.Time.Internal

Methods

(==) :: UTCTime -> UTCTime -> Bool #

(/=) :: UTCTime -> UTCTime -> Bool #

Ord UTCTime Source # 
Instance details

Defined in Pact.Time.Internal

LeftTorsor UTCTime Source # 
Instance details

Defined in Pact.Time.Internal

Associated Types

type Diff UTCTime #

type Rep UTCTime Source # 
Instance details

Defined in Pact.Time.Internal

type Rep UTCTime = D1 ('MetaData "UTCTime" "Pact.Time.Internal" "pact-time-0.3.0.1-48iocCFVBhNFn5qKDoNmak" 'True) (C1 ('MetaCons "UTCTime" 'PrefixI 'True) (S1 ('MetaSel ('Just "_utcTime") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 NominalDiffTime)))
type Diff UTCTime Source # 
Instance details

Defined in Pact.Time.Internal

day :: Lens' UTCTime ModifiedJulianDay Source #

The date of a UTCTime value represented as modified Julian Day.

dayTime :: Lens' UTCTime NominalDiffTime Source #

The day time of a UTCTime value represented as NominalDiffTime since 00:00:00 of that respective day.

fromDayAndDayTime :: ModifiedJulianDay -> NominalDiffTime -> UTCTime Source #

Create a UTCTime from a date and a daytime. The date is represented as modified Julian Day and the day time is represented as NominalDiffTime since '00:00:00' of the respective day.

Note that this implementation does not support representation of leap seconds.

posixEpoch :: UTCTime Source #

The POSIX Epoch represented as UTCTime.

mjdEpoch :: UTCTime Source #

The Epoch of the modified Julian day represented as UTCTime.

Formatting and Parsing

formatTime :: FormatTime t => String -> t -> String Source #

Reexports

class AdditiveSemigroup g where #

Additive Semigroup

(a `plus` b) `plus` c == a `plus` (b `plus` c)

Methods

plus :: g -> g -> g #

Instances

Instances details
AdditiveSemigroup Int16 
Instance details

Defined in Numeric.Additive

Methods

plus :: Int16 -> Int16 -> Int16 #

AdditiveSemigroup Int32 
Instance details

Defined in Numeric.Additive

Methods

plus :: Int32 -> Int32 -> Int32 #

AdditiveSemigroup Int64 
Instance details

Defined in Numeric.Additive

Methods

plus :: Int64 -> Int64 -> Int64 #

AdditiveSemigroup Int8 
Instance details

Defined in Numeric.Additive

Methods

plus :: Int8 -> Int8 -> Int8 #

AdditiveSemigroup Rational 
Instance details

Defined in Numeric.Additive

Methods

plus :: Rational -> Rational -> Rational #

AdditiveSemigroup Word16 
Instance details

Defined in Numeric.Additive

Methods

plus :: Word16 -> Word16 -> Word16 #

AdditiveSemigroup Word32 
Instance details

Defined in Numeric.Additive

Methods

plus :: Word32 -> Word32 -> Word32 #

AdditiveSemigroup Word64 
Instance details

Defined in Numeric.Additive

Methods

plus :: Word64 -> Word64 -> Word64 #

AdditiveSemigroup Word8 
Instance details

Defined in Numeric.Additive

Methods

plus :: Word8 -> Word8 -> Word8 #

AdditiveSemigroup Word128 
Instance details

Defined in Numeric.Additive

Methods

plus :: Word128 -> Word128 -> Word128 #

AdditiveSemigroup Word256 
Instance details

Defined in Numeric.Additive

Methods

plus :: Word256 -> Word256 -> Word256 #

AdditiveSemigroup NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

AdditiveSemigroup Integer 
Instance details

Defined in Numeric.Additive

Methods

plus :: Integer -> Integer -> Integer #

AdditiveSemigroup Natural 
Instance details

Defined in Numeric.Additive

Methods

plus :: Natural -> Natural -> Natural #

AdditiveSemigroup Int 
Instance details

Defined in Numeric.Additive

Methods

plus :: Int -> Int -> Int #

AdditiveSemigroup Word 
Instance details

Defined in Numeric.Additive

Methods

plus :: Word -> Word -> Word #

class AdditiveSemigroup g => AdditiveMonoid g where #

Additive Monoid

a `plus` zero == a
zero `plus` a == a

Methods

zero :: g #

Instances

Instances details
AdditiveMonoid Int16 
Instance details

Defined in Numeric.Additive

Methods

zero :: Int16 #

AdditiveMonoid Int32 
Instance details

Defined in Numeric.Additive

Methods

zero :: Int32 #

AdditiveMonoid Int64 
Instance details

Defined in Numeric.Additive

Methods

zero :: Int64 #

AdditiveMonoid Int8 
Instance details

Defined in Numeric.Additive

Methods

zero :: Int8 #

AdditiveMonoid Rational 
Instance details

Defined in Numeric.Additive

Methods

zero :: Rational #

AdditiveMonoid Word16 
Instance details

Defined in Numeric.Additive

Methods

zero :: Word16 #

AdditiveMonoid Word32 
Instance details

Defined in Numeric.Additive

Methods

zero :: Word32 #

AdditiveMonoid Word64 
Instance details

Defined in Numeric.Additive

Methods

zero :: Word64 #

AdditiveMonoid Word8 
Instance details

Defined in Numeric.Additive

Methods

zero :: Word8 #

AdditiveMonoid Word128 
Instance details

Defined in Numeric.Additive

Methods

zero :: Word128 #

AdditiveMonoid Word256 
Instance details

Defined in Numeric.Additive

Methods

zero :: Word256 #

AdditiveMonoid NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

AdditiveMonoid Integer 
Instance details

Defined in Numeric.Additive

Methods

zero :: Integer #

AdditiveMonoid Natural 
Instance details

Defined in Numeric.Additive

Methods

zero :: Natural #

AdditiveMonoid Int 
Instance details

Defined in Numeric.Additive

Methods

zero :: Int #

AdditiveMonoid Word 
Instance details

Defined in Numeric.Additive

Methods

zero :: Word #

class AdditiveMonoid g => AdditiveGroup g where #

Additive Group

a `plus` inverse a == zero
inverse a `plus` a == zero

Minimal complete definition

invert | minus

Methods

invert :: g -> g #

minus :: g -> g -> g #

Instances

Instances details
AdditiveGroup Int16 
Instance details

Defined in Numeric.Additive

Methods

invert :: Int16 -> Int16 #

minus :: Int16 -> Int16 -> Int16 #

AdditiveGroup Int32 
Instance details

Defined in Numeric.Additive

Methods

invert :: Int32 -> Int32 #

minus :: Int32 -> Int32 -> Int32 #

AdditiveGroup Int64 
Instance details

Defined in Numeric.Additive

Methods

invert :: Int64 -> Int64 #

minus :: Int64 -> Int64 -> Int64 #

AdditiveGroup Int8 
Instance details

Defined in Numeric.Additive

Methods

invert :: Int8 -> Int8 #

minus :: Int8 -> Int8 -> Int8 #

AdditiveGroup Rational 
Instance details

Defined in Numeric.Additive

AdditiveGroup Word16 
Instance details

Defined in Numeric.Additive

Methods

invert :: Word16 -> Word16 #

minus :: Word16 -> Word16 -> Word16 #

AdditiveGroup Word32 
Instance details

Defined in Numeric.Additive

Methods

invert :: Word32 -> Word32 #

minus :: Word32 -> Word32 -> Word32 #

AdditiveGroup Word64 
Instance details

Defined in Numeric.Additive

Methods

invert :: Word64 -> Word64 #

minus :: Word64 -> Word64 -> Word64 #

AdditiveGroup Word8 
Instance details

Defined in Numeric.Additive

Methods

invert :: Word8 -> Word8 #

minus :: Word8 -> Word8 -> Word8 #

AdditiveGroup Word128 
Instance details

Defined in Numeric.Additive

AdditiveGroup Word256 
Instance details

Defined in Numeric.Additive

AdditiveGroup NominalDiffTime Source # 
Instance details

Defined in Pact.Time.Internal

AdditiveGroup Integer 
Instance details

Defined in Numeric.Additive

AdditiveGroup Int 
Instance details

Defined in Numeric.Additive

Methods

invert :: Int -> Int #

minus :: Int -> Int -> Int #

AdditiveGroup Word 
Instance details

Defined in Numeric.Additive

Methods

invert :: Word -> Word #

minus :: Word -> Word -> Word #

(^-^) :: AdditiveAbelianGroup g => g -> g -> g infix 6 #

(^+^) :: AdditiveAbelianSemigroup g => g -> g -> g infixl 6 #

(.+^) :: (AdditiveAbelianGroup (Diff t), LeftTorsor t) => t -> Diff t -> t infixl 6 #

(^+.) :: (AdditiveAbelianGroup (Diff t), LeftTorsor t) => Diff t -> t -> t infixl 6 #

(.-.) :: (AdditiveAbelianGroup (Diff t), LeftTorsor t) => t -> t -> Diff t infix 6 #

(.-^) :: (AdditiveAbelianGroup (Diff t), LeftTorsor t) => t -> Diff t -> t infixl 6 #