.TH s/qmail: datetime 3 .SH NAME datetime \- convert between TAI labels and seconds .SH SYNTAX .B #include void \fBdatetime_tai\fP(&\fIdt\fR,\fIt\fR); datetime_sec \fBdatetime_untai\fP(&\fIdt\fR); struct datetime \fIdt\fR; .br datetime_sec \fIt\fR; .SH DESCRIPTION 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 .IR dt , stores a TAI label. .I dt\fB.year is the year number minus 1900; .I dt\fB.mon is the month number, from 0 (January) through 11 (December); .I dt\fB.mday is the day of the month, from 1 through 31; .I dt\fB.hour is the hour, from 0 through 23; .I dt\fB.min is the minute, from 0 through 59; .I dt\fB.sec is the second, from 0 through 59; .I dt\fB.wday is the day of the week, from 0 (Sunday) through 6 (Saturday); .I dt\fB.yday is the day of the year, from 0 through 365. The .B datetime library supports more convenient TAI manipulation with the datetime_sec type. A datetime_sec value, such as .IR t , is an integer referring to the .IR t th 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. .B datetime_tai converts a datetime_sec to a TAI label. .B datetime_untai reads a TAI label (specifically .IR dt\fB.year , .IR dt\fB.mon , .IR dt\fB.mday , .IR dt\fB.hour , .IR dt\fB.min , and .IR dt\fB.sec ) and returns a datetime_sec. .SH "SEE ALSO" now(3)