module Cf_tai64:sig
..end
Computations with the Temps Atomique International (TAI) timescale.
This module defines an abstract type and associated functions for computations with values representing epochs in the Temps Atomique International (TAI) timescale. Values are represented internally with the TAI64 format defined by Dan Bernstein, and support precision to the nearest second.
Functions are provided that:
Unix.time
function.Constants are also provided that define the boundaries of valid TAI64 representations.
Warning: This implementation obtains the current time of day using the
POSIX time()
function, which returns a value based on the UTC timescale
(but with leap seconds "elided" in a way that makes conversions between
POSIX time, Standard Time and TAI a perilous undertaking). See the
Cf_stdtime
module for details.
type
t
Abstract values of TAI64 type
exception Range_error
Result not representable in TAI64 format.
exception Label_error
Input is not a valid TAI64 label
val compare : t -> t -> int
A total ordering function, defined so that the Cf_tai64
module has the
signature of the Cf_ordered.Total_T
module type. compare a b
compares
two TAI64 values and returns either -1
, 0
, or 1
depending on the
relative total ordering of the values.
val now : unit -> t
Returns the current time in TAI64, obtained by reading the current time
from the POSIX time()
function, and adjusting for leap seconds.
(Currently, the leap seconds table is hardcoded into the library, and the
most recent leap second announcement was for Dec 31, 1998.)
val first : t
The earliest TAI epoch representable in the TAI64 format. The TAI64 label
is 0000000000000000
.
val last : t
The latest TAI epoch representable in the TAI64 format. The TAI64 label
is 7fffffffffffffff
.
val to_unix_time : t -> float
Converts a TAI64 value to a value consistent with the result of calling the
Unix.gettimeofday
function.
val of_unix_time : float -> t
Converts a value consistent with the result of calling the Unix.time
function into a TAI64 value.
val to_label : t -> string
Returns a string of 8 characters containing the TAI64 label corresponding to the TAI64 value of its argument.
val of_label : string -> t
Interprets the argument as a TAI64 label and returns the corresponding
TAI64 value. Raises Label_error
if the label is not a valid TAI64 label.
val add : t -> int -> t
Add seconds to a TAI64 value. Raises Range_error
if the result is not
a valid TAI64 value.
val add_int32 : t -> int32 -> t
Add seconds to a TAI64 value. Raises Range_error
if the result is not
a valid TAI64 value.
val add_int64 : t -> int64 -> t
Add seconds to a TAI64 value. Raises Range_error
if the result is not
a valid TAI64 value.
val sub : t -> t -> int64
Subtract one TAI64 value from another. sub t0 t1
returns the number of
seconds before t0
that t1
denotes.