29 lines
1.4 KiB
Plaintext
29 lines
1.4 KiB
Plaintext
|
libtai is a library for storing and manipulating dates and times.
|
||
|
|
||
|
libtai supports two time scales: (1) TAI64, covering a few hundred
|
||
|
billion years with 1-second precision; (2) TAI64NA, covering the same
|
||
|
period with 1-attosecond precision. Both scales are defined in terms of
|
||
|
TAI, the current international real time standard.
|
||
|
|
||
|
libtai provides an internal format for TAI64, struct tai, designed for
|
||
|
fast time manipulations. The tai_pack() and tai_unpack() routines
|
||
|
convert between struct tai and a portable 8-byte TAI64 storage format.
|
||
|
libtai provides similar internal and external formats for TAI64NA.
|
||
|
|
||
|
libtai provides struct caldate to store dates in year-month-day form. It
|
||
|
can convert struct caldate, under the Gregorian calendar, to a modified
|
||
|
Julian day number for easy date arithmetic.
|
||
|
|
||
|
libtai provides struct caltime to store calendar dates and times along
|
||
|
with UTC offsets. It can convert from struct tai to struct caltime in
|
||
|
UTC, accounting for leap seconds, for accurate date and time display. It
|
||
|
can also convert back from struct caltime to struct tai for user input.
|
||
|
Its overall UTC-to-TAI conversion speed is 100x better than the usual
|
||
|
UNIX mktime() implementation.
|
||
|
|
||
|
This version of libtai requires a UNIX system with gettimeofday(). It
|
||
|
will be easy to port to other operating systems with compilers
|
||
|
supporting 64-bit arithmetic.
|
||
|
|
||
|
The libtai source code is in the public domain.
|