Module Time.System

System time

A representation of timestamps.

NOTE: This representation is limited to times between 0000-01-01 00:00:00 UTC and 9999-12-31 23:59:59.999999999999 UTC

NOTE: This is based on the system clock. As a result, it is affected by system clock adjustments. IF you need monotonous time, you can use Mtime.

type t = Ptime.t
val now : unit -> Ptime.t

The current time according to the system clock

val epoch : t

Unix epoch is 1970-01-01 00:00:00.000000000000 UTC

module Span : sig ... end

Conversions to and from Protocol time

Note that converting system time to protocol time truncates any subsecond precision.

val of_protocol_opt : Protocol.t -> t option

Convert a Protocol time into a System time.

Return None if the Protocol time is outside the RFC3339 range.

val of_protocol_exn : Protocol.t -> t

Convert a Protocol time into a System time.

Raises Invalid_argument if the Protocol time is outside the RFC3339 range.

val to_protocol : t -> Protocol.t

Convert a System time into a Protocol time.

Note that subseconds are truncated.

Conversions to and from string (using RFC3339)

val of_notation_opt : string -> t option

Convert a string in the RFC3339 format (e.g., "1970-01-01T00:00:00.000-00:00") into a system time. Invalid RFC3339 notations will return None.

Note that years outside the 0000-9999 range are invalid RFC3339-wise.

val of_notation_exn : string -> t

Convert a string in the RFC3339 format (e.g., "1970-01-01T00:00:00.000-00:00") into a system time. Invalid RFC3339 notations will raise Invalid_argument.

Note that years outside the 0000-9999 range are invalid RFC3339-wise.

val to_notation : t -> string

Convert a system time into an RFC3339 notation (e.g., "1970-01-01T00:00:00.000-00:00").

Serialization

val encoding : t Data_encoding.t
val rfc_encoding : t Data_encoding.t
val rpc_arg : t Tezos_rpc.Arg.t

Pretty-printing

val pp_hum : Stdlib.Format.formatter -> t -> unit

Timestamping data

type 'a stamped = {
data : 'a;
stamp : t;
}

Data with an associated time stamp.

val stamped_encoding : 'a Data_encoding.t -> 'a stamped Data_encoding.t
val stamp : time:t -> 'a -> 'a stamped

stamp d is a timestamped version of d.

val pp_stamped : ( Stdlib.Format.formatter -> 'a -> unit ) -> Stdlib.Format.formatter -> 'a stamped -> unit
val recent : ('a * t) option -> ('a * t) option -> ('a * t) option

recent a b is either a or b (which ever carries the most recent timestamp), or None if both a and b are None.

Helper modules

val hash : t -> int
include Tezos_stdlib.Compare.S with type t := t
val (=) : t -> t -> bool

x = y iff compare x y = 0

val (<>) : t -> t -> bool

x <> y iff compare x y <> 0

val (<) : t -> t -> bool

x < y iff compare x y < 0

val (<=) : t -> t -> bool

x <= y iff compare x y <= 0

val (>=) : t -> t -> bool

x >= y iff compare x y >= 0

val (>) : t -> t -> bool

x > y iff compare x y > 0

val compare : t -> t -> int

compare an alias for the functor parameter's compare function

val equal : t -> t -> bool

equal x y iff compare x y = 0

val max : t -> t -> t

max x y is x if x >= y otherwise it is y

val min : t -> t -> t

min x y is x if x <= y otherwise it is y