Time Scales
There are two primary time scales used today,
TAI and
UTC.
As of 2006, 23 leap seconds have been added to UTC. UTC was not defined until 1972. It is defined as starting at precisely 00:00:10 1st Jan 1972 (TAI); i.e. it was defined as being 10 seconds ahead of TAI at inception (see
leap-seconds.list from the Olson/Eggert TZ database maintained by Paul Eggert) . Between then and 2006, 23 leap seconds have been added, meaning that as of 2006 TAI is ahead of UTC by exactly 33 seconds.
System time on most unix systems counts seconds (except leap seconds) since 00:00:00 1st Jan 1970 (UTC). While such a time doesn't actually exist (UTC being defined two years later) this time is conventionally assumed to equal 00:00:10 1st Jan 1970 (TAI).
If you run the
date
command on a system that is synchronized with NTP and the time appears to be 23 seconds off, the odds are good that your time is being reported using a TAI (
right
) timescale instead of a UTC (
posix
) timescale.
Unix-like systems (for example) generally use
timezone files, and in most cases the UTC (
posix
) versions of these files are used.
Many Linux systems, however, are built so the TAI (
right
)
zoneinfo
files are used. If this is the case, you will see the leapsecond discrepancy (in addition to any timezone correction) if you type
date ; date -u
at a shell prompt.
Recent versions of Debian, Ubuntu, Arch, Fedora, and other systemd-based distributions may be configured for POSIX time zones as follows.
A system's time zone may be changed by
linking a time zone file in the
/usr/share/zoneinfo
directory to
/etc/localtime
. As an example, to specify the POSIX US Eastern time zone use the command:
ln -Tsf /usr/share/zoneinfo/posix/US/Eastern /etc/localtime
or, using systemd (which will also adjust pre-systemd files
/etc/timezone
on Debian and
/etc/sysconfig/clock
on RedHat):
timedatectl set-timezone posix/US/Eastern
The time zone that is currently being used is specified by the
/etc/localtime
zone file whereas all of the generic time zone files reside in the
/usr/share/zoneinfo
directory. Specifically, the POSIX zone files are stored in the
/usr/share/zoneinfo/posix
directory.