| Did you know ... | Search Documentation: |
| Pack logtalk -- logtalk-3.98.0/docs/apis/_sources/time_scales_protocol_0.rst.txt |
.. index:: single: time_scales_protocol .. _time_scales_protocol/0:
.. rst-class:: right
protocol
time_scales_protocolTime scales conversion protocol for UTC, TAI, TT, UT1, TDB, GPS, GST, TCG, and TCB.
| Availability:
| logtalk_load(time_scales(loader))
| Author: Paulo Moura | Version: 1:0:0 | Date: 2026-02-25
| Compilation flags:
| static
| Dependencies: | (none)
| Remarks: | (none)
| Inherited public predicates: | (none)
.. contents:: :local: :backlinks: top
.. index:: valid_scale/1 .. _time_scales_protocol/0::valid_scale/1:
valid_scale/1 ^^^^^^^^^^^^^^^^^
True when the argument is a supported time scale (utc, tai, tt, ut1, tdb, gps, gst, tcg, or tcb).
| Compilation flags:
| static
| Template:
| valid_scale(Scale)
| Mode and number of proofs:
| valid_scale(@atom) - zero_or_one
.. index:: supported_range/2 .. _time_scales_protocol/0::supported_range/2:
supported_range/2 ^^^^^^^^^^^^^^^^^^^^^
Returns the supported UTC datetime range as date_time(Year,Month,Day,Hour,Minute,Second) terms.
| Compilation flags:
| static
| Template:
| supported_range(StartUTC,EndUTC)
| Mode and number of proofs:
| supported_range(-compound,-compound) - one
.. index:: leap_second_date/2 .. _time_scales_protocol/0::leap_second_date/2:
leap_second_date/2 ^^^^^^^^^^^^^^^^^^^^^^
Enumerates UTC effective dates for TAI-UTC step changes and their resulting offset in SI seconds.
| Compilation flags:
| static
| Template:
| leap_second_date(UTCDateTime,OffsetSeconds)
| Mode and number of proofs:
| leap_second_date(?compound,?integer) - zero_or_more
.. index:: load_leap_seconds_override/1 .. _time_scales_protocol/0::load_leap_seconds_override/1:
load_leap_seconds_override/1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Loads leap-second override data from a user-provided file containing leap(UnixSeconds,OffsetSeconds). terms.
| Compilation flags:
| static
| Template:
| load_leap_seconds_override(File)
| Mode and number of proofs:
| load_leap_seconds_override(+atom) - one
.. index:: clear_leap_seconds_override/0 .. _time_scales_protocol/0::clear_leap_seconds_override/0:
clear_leap_seconds_override/0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Clears any previously loaded leap-second override data and reverts to bundled data.
| Compilation flags:
| static
| Mode and number of proofs:
| clear_leap_seconds_override - one
.. index:: leap_seconds_source/1 .. _time_scales_protocol/0::leap_seconds_source/1:
leap_seconds_source/1 ^^^^^^^^^^^^^^^^^^^^^^^^^
Returns the active leap-seconds data source as either bundled or override.
| Compilation flags:
| static
| Template:
| leap_seconds_source(Source)
| Mode and number of proofs:
| leap_seconds_source(-atom) - one
.. index:: leap_seconds_entries/1 .. _time_scales_protocol/0::leap_seconds_entries/1:
leap_seconds_entries/1 ^^^^^^^^^^^^^^^^^^^^^^^^^^
Returns the active leap-seconds table as an ordered list of leap(UnixSeconds,OffsetSeconds) terms.
| Compilation flags:
| static
| Template:
| leap_seconds_entries(Entries)
| Mode and number of proofs:
| leap_seconds_entries(-list) - one
.. index:: save_leap_seconds_entries/1 .. _time_scales_protocol/0::save_leap_seconds_entries/1:
save_leap_seconds_entries/1 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Saves the active leap-seconds table to a file as leap(UnixSeconds,OffsetSeconds). terms.
| Compilation flags:
| static
| Template:
| save_leap_seconds_entries(File)
| Mode and number of proofs:
| save_leap_seconds_entries(+atom) - one
.. index:: load_dut1_override/1 .. _time_scales_protocol/0::load_dut1_override/1:
load_dut1_override/1 ^^^^^^^^^^^^^^^^^^^^^^^^
Loads DUT1 override data from a user-provided file containing dut1(UnixSeconds,Numerator,Denominator). terms.
| Compilation flags:
| static
| Template:
| load_dut1_override(File)
| Mode and number of proofs:
| load_dut1_override(+atom) - one
.. index:: clear_dut1_override/0 .. _time_scales_protocol/0::clear_dut1_override/0:
clear_dut1_override/0 ^^^^^^^^^^^^^^^^^^^^^^^^^
Clears any previously loaded DUT1 override data and reverts to bundled data.
| Compilation flags:
| static
| Mode and number of proofs:
| clear_dut1_override - one
.. index:: dut1_source/1 .. _time_scales_protocol/0::dut1_source/1:
dut1_source/1 ^^^^^^^^^^^^^^^^^
Returns the active DUT1 data source as either bundled or override.
| Compilation flags:
| static
| Template:
| dut1_source(Source)
| Mode and number of proofs:
| dut1_source(-atom) - one
.. index:: dut1_entries/1 .. _time_scales_protocol/0::dut1_entries/1:
dut1_entries/1 ^^^^^^^^^^^^^^^^^^
Returns the active DUT1 table as an ordered list of dut1(UnixSeconds,Numerator,Denominator) terms.
| Compilation flags:
| static
| Template:
| dut1_entries(Entries)
| Mode and number of proofs:
| dut1_entries(-list) - one
.. index:: save_dut1_entries/1 .. _time_scales_protocol/0::save_dut1_entries/1:
save_dut1_entries/1 ^^^^^^^^^^^^^^^^^^^^^^^
Saves the active DUT1 table to a file as dut1(UnixSeconds,Numerator,Denominator). terms.
| Compilation flags:
| static
| Template:
| save_dut1_entries(File)
| Mode and number of proofs:
| save_dut1_entries(+atom) - one
.. index:: utc_date_time_to_instant/2 .. _time_scales_protocol/0::utc_date_time_to_instant/2:
utc_date_time_to_instant/2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Converts a UTC datetime term to an instant represented as instant(utc,Seconds,fraction(Numerator,Denominator)) where Seconds are Unix epoch seconds and the fractional component is normalized.
| Compilation flags:
| static
| Template:
| utc_date_time_to_instant(UTCDateTime,Instant)
| Mode and number of proofs:
| utc_date_time_to_instant(+compound,-compound) - zero_or_one
.. index:: valid_instant/1 .. _time_scales_protocol/0::valid_instant/1:
valid_instant/1 ^^^^^^^^^^^^^^^^^^^
True when the argument is a valid supported instant term instant(Scale,Seconds,fraction(Numerator,Denominator)).
| Compilation flags:
| static
| Template:
| valid_instant(Instant)
| Mode and number of proofs:
| valid_instant(+compound) - zero_or_one
.. index:: check_instant/1 .. _time_scales_protocol/0::check_instant/1:
check_instant/1 ^^^^^^^^^^^^^^^^^^^
Checks an instant term and throws an error instead of failing on invalid input.
| Compilation flags:
| static
| Template:
| check_instant(Instant)
| Mode and number of proofs:
| check_instant(+compound) - one_or_error
| Exceptions:
| Instant is a variable:
| instantiation_error
| Instant is not a valid instant term:
| domain_error(instant,Instant)
| Scale in Instant is neither a variable nor an atom:
| type_error(atom,Scale)
| Scale in Instant is not supported:
| domain_error(time_scale,Scale)
| Seconds in Instant is neither a variable nor an integer:
| type_error(integer,Seconds)
| Seconds in Instant is before supported UTC epoch:
| domain_error(utc_unix_seconds,Seconds)
| Fraction term in Instant is not of the form fraction(Numerator,Denominator):
| domain_error(fraction,Fraction)
| Numerator in Instant is neither a variable nor an integer:
| type_error(integer,Numerator)
| Denominator in Instant is neither a variable nor an integer:
| type_error(integer,Denominator)
| Denominator in Instant is not positive:
| domain_error(positive_denominator,Denominator)
| Normalized fraction in Instant is not in the [0,1[ interval:
| domain_error(normalized_fraction,Fraction)
.. index:: valid_conversion/3 .. _time_scales_protocol/0::valid_conversion/3:
valid_conversion/3 ^^^^^^^^^^^^^^^^^^^^^^
True when an instant is valid for FromScale and conversion to ToScale is admissible.
| Compilation flags:
| static
| Template:
| valid_conversion(Instant,FromScale,ToScale)
| Mode and number of proofs:
| valid_conversion(+compound,+atom,+atom) - zero_or_one
.. index:: check_conversion/3 .. _time_scales_protocol/0::check_conversion/3:
check_conversion/3 ^^^^^^^^^^^^^^^^^^^^^^
Checks a conversion request and throws an error instead of failing on invalid input.
| Compilation flags:
| static
| Template:
| check_conversion(Instant,FromScale,ToScale)
| Mode and number of proofs:
| check_conversion(+compound,+atom,+atom) - one_or_error
| Exceptions:
| Instant, FromScale, or ToScale is a variable:
| instantiation_error
| FromScale is neither a variable nor an atom:
| type_error(atom,FromScale)
| ToScale is neither a variable nor an atom:
| type_error(atom,ToScale)
| FromScale is not supported:
| domain_error(time_scale,FromScale)
| ToScale is not supported:
| domain_error(time_scale,ToScale)
| Instant is not a valid instant term:
| domain_error(instant,Instant)
| Scale in Instant is neither a variable nor an atom:
| type_error(atom,Scale)
| Scale in Instant is not supported:
| domain_error(time_scale,Scale)
| Seconds in Instant is neither a variable nor an integer:
| type_error(integer,Seconds)
| Seconds in Instant is before supported UTC epoch:
| domain_error(utc_unix_seconds,Seconds)
| Fraction term in Instant is not of the form fraction(Numerator,Denominator):
| domain_error(fraction,Fraction)
| Numerator in Instant is neither a variable nor an integer:
| type_error(integer,Numerator)
| Denominator in Instant is neither a variable nor an integer:
| type_error(integer,Denominator)
| Denominator in Instant is not positive:
| domain_error(positive_denominator,Denominator)
| Normalized fraction in Instant is not in the [0,1[ interval:
| domain_error(normalized_fraction,Fraction)
| Instant scale does not match FromScale:
| domain_error(scale_mismatch,instant_scale(InstantScale,FromScale))
.. index:: instant_to_utc_date_time/2 .. _time_scales_protocol/0::instant_to_utc_date_time/2:
instant_to_utc_date_time/2 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Converts an UTC instant represented as instant(utc,Seconds,fraction(Numerator,Denominator)) to a UTC datetime term. Requires zero fractional part.
| Compilation flags:
| static
| Template:
| instant_to_utc_date_time(Instant,UTCDateTime)
| Mode and number of proofs:
| instant_to_utc_date_time(+compound,-compound) - zero_or_one
.. index:: convert/4 .. _time_scales_protocol/0::convert/4:
convert/4 ^^^^^^^^^^^^^
Converts an instant(Scale,Seconds,fraction(Numerator,Denominator)) from FromScale to ToScale.
| Compilation flags:
| static
| Template:
| convert(Instant,FromScale,ToScale,ConvertedInstant)
| Mode and number of proofs:
| convert(+compound,+atom,+atom,-compound) - zero_or_one
.. index:: check_convert/4 .. _time_scales_protocol/0::check_convert/4:
check_convert/4 ^^^^^^^^^^^^^^^^^^^
Converts an instant from FromScale to ToScale and throws an error instead of failing on invalid input.
| Compilation flags:
| static
| Template:
| check_convert(Instant,FromScale,ToScale,ConvertedInstant)
| Mode and number of proofs:
| check_convert(+compound,+atom,+atom,-compound) - one_or_error
| Exceptions:
| Instant, FromScale, or ToScale is a variable:
| instantiation_error
| FromScale is neither a variable nor an atom:
| type_error(atom,FromScale)
| ToScale is neither a variable nor an atom:
| type_error(atom,ToScale)
| FromScale is not supported:
| domain_error(time_scale,FromScale)
| ToScale is not supported:
| domain_error(time_scale,ToScale)
| Instant is not a valid instant term:
| domain_error(instant,Instant)
| Scale in Instant is neither a variable nor an atom:
| type_error(atom,Scale)
| Scale in Instant is not supported:
| domain_error(time_scale,Scale)
| Seconds in Instant is neither a variable nor an integer:
| type_error(integer,Seconds)
| Seconds in Instant is before supported UTC epoch:
| domain_error(utc_unix_seconds,Seconds)
| Fraction term in Instant is not of the form fraction(Numerator,Denominator):
| domain_error(fraction,Fraction)
| Numerator in Instant is neither a variable nor an integer:
| type_error(integer,Numerator)
| Denominator in Instant is neither a variable nor an integer:
| type_error(integer,Denominator)
| Denominator in Instant is not positive:
| domain_error(positive_denominator,Denominator)
| Normalized fraction in Instant is not in the [0,1[ interval:
| domain_error(normalized_fraction,Fraction)
| Instant scale does not match FromScale:
| domain_error(scale_mismatch,instant_scale(InstantScale,FromScale))
.. index:: offset/3 .. _time_scales_protocol/0::offset/3:
offset/3 ^^^^^^^^^^^^
Returns the offset required to convert an instant to a target scale as rational(Numerator,Denominator).
| Compilation flags:
| static
| Template:
| offset(Instant,ToScale,Offset)
| Mode and number of proofs:
| offset(+compound,+atom,-compound) - zero_or_one
.. index:: check_offset/3 .. _time_scales_protocol/0::check_offset/3:
check_offset/3 ^^^^^^^^^^^^^^^^^^
Returns the conversion offset and throws an error instead of failing on invalid input.
| Compilation flags:
| static
| Template:
| check_offset(Instant,ToScale,Offset)
| Mode and number of proofs:
| check_offset(+compound,+atom,-compound) - one_or_error
| Exceptions:
| Instant or ToScale is a variable:
| instantiation_error
| ToScale is neither a variable nor an atom:
| type_error(atom,ToScale)
| ToScale is not supported:
| domain_error(time_scale,ToScale)
| Instant is not a valid instant term:
| domain_error(instant,Instant)
| Scale in Instant is neither a variable nor an atom:
| type_error(atom,Scale)
| Scale in Instant is not supported:
| domain_error(time_scale,Scale)
| Seconds in Instant is neither a variable nor an integer:
| type_error(integer,Seconds)
| Seconds in Instant is before supported UTC epoch:
| domain_error(utc_unix_seconds,Seconds)
| Fraction term in Instant is not of the form fraction(Numerator,Denominator):
| domain_error(fraction,Fraction)
| Numerator in Instant is neither a variable nor an integer:
| type_error(integer,Numerator)
| Denominator in Instant is neither a variable nor an integer:
| type_error(integer,Denominator)
| Denominator in Instant is not positive:
| domain_error(positive_denominator,Denominator)
| Normalized fraction in Instant is not in the [0,1[ interval:
| domain_error(normalized_fraction,Fraction)
(none)
(none)
(none)
.. seealso::
:ref:`time_scales <time_scales/0>`, :ref:`date <date/0>`