NAME

Time::TT - Terrestrial Time and its realisations

SYNOPSIS

        use Time::TT qw(tt_instant_to_mjd tt_mjd_to_instant);

        $mjd = tt_instant_to_mjd($instant);
        $instant = tt_mjd_to_instant($mjd);

        use Time::TT qw(tt_instant_to_jepoch tt_jepoch_to_instant);

        $jepoch = tt_instant_to_jepoch($instant);
        $instant = tt_jepoch_to_instant($jepoch);

        use Time::TT qw(tt_realisation);

        $rln = tt_realisation("bipm05");
        $instant = $rln->from_tai($tai_instant);

DESCRIPTION

Terrestrial Time (TT) is a time scale representing time on the surface of Terra. Specifically, it is the proper time experienced by a clock located on the rotating geoid (i.e., at sea level). It is indirectly the basis for Terran civil timekeeping, via its realisation International Atomic Time (TAI). It is linearly related to (and in fact now defined in terms of) the astronomical time scale Geocentric Coordinate Time (TCG).

This module represents instants on the TT time scale as a scalar number of SI seconds since an epoch. This is an appropriate form for all manner of calculations. The TT scale is defined with a well-known point at TAI instant 1977-01-01T00:00:00.0. That instant is assigned the scalar value 599_616_000 exactly, corresponding to an epoch (scalar value zero) near the TAI epoch 1958-01-01T00:00:00.0. This matches the convention used by Time::TAI for instants on the TAI scale. Because TAI does not match the rate of TT perfectly, the TT epoch is not precisely equal to the TAI epoch, but is instead around 600 us earlier than it.

There is also a conventional way to represent TT instants using day-based notations associated with planetary rotation `time' scales. The `day' of TT is a nominal period of exactly 86400 SI seconds, which is slightly shorter than an actual Terran day. The well-known point at TAI instant 1977-01-01T00:00:00.0 is assigned the label 1977-01-01T00:00:32.184 (MJD 43144.0003725). Because TT is not connected to Terran rotation, and so has no inherent concept of a day, it is somewhat misleading to use such day-based notations. Conversion between this notation and the linear count of seconds is supported by this module. This notation does not match the similar day-based notation used for TAI.

There is another conventional way to represent TT instants, using a larger unit approximating the duration of a Terran year. The `Julian year' is a nominal period of exactly 365.25 `days' of exactly 86400 SI seconds each. The TT instant 2000-01-01T12:00:00.0 (MJD 51544.5) is labelled as Julian epoch 2000.0. Julian epochs are used only with TT, not with any other time scale. The Julian epoch numbers correspond approximately to Gregorian calendar years, for dates within a few kiloyears of the epoch. Because TT is not connected to the Terran orbit, and so has no inherent concept of a year, the year-based notation is somewhat misleading. Conversion between this notation and the linear count of seconds is supported by this module.

Because TT is a theoretical time scale, not directly accessible for practical use, it must be realised using atomic clocks. This is done by metrological agencies, each with different imperfections. To achieve microsecond accuracy it is necessary to take account of these differences. This module supports conversion of times between different realisations of TT.

FUNCTIONS

tt_instant_to_mjd(INSTANT)

Converts from a count of seconds to a Modified Julian Date in the manner conventional for TT. The MJD can be further converted to other forms of day-based date using other modules. The input must be a Math::BigRat object, and the result is the same type.

tt_mjd_to_instant(MJD)

Converts from a Modified Julian Date, interpreted in the manner conventional for TT, to a count of seconds. The input must be a Math::BigRat object, and the result is the same type.

tt_instant_to_jepoch(INSTANT)

Converts from a count of seconds to a Julian epoch. The input must be a Math::BigRat object, and the result is the same type.

tt_jepoch_to_instant(JEPOCH)

Converts from a Julian epoch to a count of seconds. The input must be a Math::BigRat object, and the result is the same type.

tt_realisation(NAME)

Looks up and returns an object representing a named realisation of TT. The object returned is of the class Time::TT::Realisation; see the documentation of that class for its interface.

The name, recognised case-insensitively, may be of these forms:

bipm05

Retrospective best estimate of TT, published by the BIPM. TT(BIPM05) was published in 2005, and other versions were (and will be) published in other years, with the digits in the name varying accordingly. These time scales are currently based on reanalysis of the TAI data. They are defined by isolated data points, so conversions in general involve interpolation; the process is by its nature inexact.

eal

TT(EAL) is derived from the Free Atomic Scale (EAL). EAL is the weighted average of the time ticked by the clocks contributing to TAI, with no gravitational correction applied. TAI is generated by applying a frequency shift to EAL to correct for gravitational time dilation. The relationship between EAL and TAI is precisely defined, so conversions are exact.

tai

TT(TAI) is the principal realisation of TT, derived directly from International Atomic Time (TAI). This is defined monthly in retrospect and then never revised.

tai/npl

TT(TAI) based on TAI(NPL), the real-time estimate of TAI supplied by the National Physical Laboratory in the UK. Other real-time estimates of TAI are named similarly using an abbreviation of the name of the supplying agency. See the tai_realisation function in Time::TAI for more discussion, or Time::TT::Agencies for a list of agencies.

Other names may be recognised in the future, as more TT(k) time scales are defined.

In order to use any of the TAI-based realisations the Time::TAI module is required.

BUGS

The data for EAL only goes forward to mid-2005. There is no machine-readable source of subsequent data.

SEE ALSO

Date::JD, Time::TAI, Time::TCG, Time::TT::Agencies, Time::TT::Realisation

AUTHOR

Andrew Main (Zefram) <zefram@fysh.org>

COPYRIGHT

Copyright (C) 2006, 2007, 2010, 2012 Andrew Main (Zefram) <zefram@fysh.org>

LICENSE

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.