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 wellknown point at TAI instant 19770101T00: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 19580101T00: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 daybased 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 wellknown point at TAI instant 19770101T00:00:00.0 is assigned the label 19770101T00: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 daybased notations. Conversion between this notation and the linear count of seconds is supported by this module. This notation does not match the similar daybased 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 20000101T12: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 yearbased 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 daybased 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 caseinsensitively, 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 realtime estimate of TAI supplied by the National Physical Laboratory in the UK. Other realtime 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 TAIbased realisations the
Time::TAI
module is required.
BUGS
The data for EAL only goes forward to mid2005. There is no machinereadable 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.