Scroll to navigation

datetime(3) Library Functions Manual datetime(3)


datetime - convert between TAI labels and seconds


#include <datetime.h>

void datetime_tai(&dt,t);

datetime_sec datetime_untai(&dt);

struct datetime dt;
datetime_sec t;


International Atomic Time, TAI, is the fundamental unit for time measurements. TAI has one label for every second of real time, without complications such as leap seconds.

A struct datetime variable, such as dt, stores a TAI label. dt.year is the year number minus 1900; dt.mon is the month number, from 0 (January) through 11 (December); dt.mday is the day of the month, from 1 through 31; dt.hour is the hour, from 0 through 23; dt.min is the minute, from 0 through 59; dt.sec is the second, from 0 through 59; dt.wday is the day of the week, from 0 (Sunday) through 6 (Saturday); dt.yday is the day of the year, from 0 through 365.

The datetime library supports more convenient TAI manipulation with the datetime_sec type. A datetime_sec value, such as t, is an integer referring to the tth second after the beginning of 1970 TAI. The first second of 1970 TAI was 0; the next second was 1; the last second of 1969 TAI was -1. The difference between two datetime_sec values is a number of real-time seconds.

datetime_tai converts a datetime_sec to a TAI label.

datetime_untai reads a TAI label (specifically dt.year, dt.mon, dt.mday, dt.hour, dt.min, and dt.sec) and returns a datetime_sec.