COHERENT manpages

This page displays the COHERENT manpage for time [Overview].

List of available manpages
Index


time -- Overview

COHERENT includes a number of routines that allow you to set and manipulate
time, as recorded on the system's  clock, into a variety of formats.  These
routines  should be  adequate for  nearly any  task that  involves temporal
calculations  or the  maintenance of  data gathered over  a long  period of
time.

All functions, global  variables, and manifest constants used in connection
with time are defined and described in the header files time.h and timeb.h.
In  brief, time  manipulates two  data elements: the  type time_t,  and the
structure tm.

time_t is  defined in the header file  <time.h>. COHERENT follows the
UNIX standard and initializes time_t to the number of seconds since January
1, 1970, 0h00m00s GMT; this moment, in turn, is rendered as day 2,440,587.5
on the  Julian calendar.  This  allows accurate calculation of  time as far
back as January 1, 4713 B.C.

The  structure tm  is  defined in  the  header file  <time.h>. It  is
defined as follows:

struct tm {
     int tm_sec;    /* current time, seconds */
     int tm_min;    /* current time, minutes */
     int tm_hour;   /* current time, hour */
     int tm_mday;   /* day of the month, 1-31 */
     int tm_mon;    /* month, 1-12 */
     int tm_year;   /* year since 1900 */
     int tm_wday;   /* day of the week, Sunday = 0 */
     int tm_yday;   /* day in the current year */
     int tm_isdst;  /* is daylight-savings time now in effect? */
};

For  an example  of manipulating  this structure  in a  C program,  see the
Lexicon entry for localtime().

Standard Time Functions

The COHERENT system includes the following functions to manipulate time:

asctime()......Convert time structure to ASCII string
clock()........Get processor time
ctime()........Convert system time to an ASCII string
difftime().....Return difference between two times
gmtime().......Convert system time to calendar structure
localtime()....Convert system time to calendar structure
mktime().......Turn broken-down time into calendar time
strftime().....Format locale-specific time
time().........Get the current time
tzset()........Set local time zone

To print out the local time, a program must perform the following tasks:

1. Read the system time with time(). This function returns a time_t.

2. Pass the  time_t returned  by time()  to the function  localtime(). This
   function breaks it down into the tm structure,

3. Pass  localtime()'s  output   to  asctime(),  which  transforms  the  tm
   structure into an ASCII string.

4. Finally, pass the output of asctime() to printf(), to displays it on the
   standard output device.

See the entry for asctime() for  an example C program that goes through the
above steps.

Special Time Functions

COHERENT  includes a  number of  extensions to the  time functions  used by
standard  UNIX  systems.  These  are  designed to  increase  the scope  and
accuracy of time-handling, and to ease calculation of some time elements.

COHERENT  holds information  about your  time  locale in  the environmental
variable  TIMEZONE. This  variable is  described in  detail in  its Lexicon
article.  In brief, it consists of seven fields:

    1. Name of the local standard time zone
    2. Offset from Greenwich Mean Time, in minutes
    3. Name of the local daylight time zone
    4. Date when daylight-savings time begins
    5. Date when daylight-savings time ends
    6. Hour when daylight-savings time begins
    7. Hour when daylight-savings time ends

The  fields are  defined in  such a  way that  any form  of daylight-saving
adjustment can be handled correctly.  For example, the United States shifts
into daylight-savings  time on  the first  Sunday in April;  whereas Brazil
shifts into daylight-savings time on a set day each spring.

The function tzset() parses TIMEZONE into the following external variables:

timezone  Seconds from GMT to give local time
tzname[2][16]Character array of names of standard and daylight times

For  details on  manipulations these  variable, see  the Lexicon  entry for
tzset().  The  library  libmisc.a  contains  the following  functions  that
convert time from Julian to Gregorian form:

time_to_jday()Convert time_t to the Julian date
jday_to_time()Convert Julian date to time_t
tm_to_jday()Convert tm structure to Julian date
jday_to_tm()Convert Julian date to tm structure

COHERENT's time functions  assume that conversion to the Gregorian calendar
occurred October 1582, when it was first adopted in Rome.  However, various
nations adopted the Gregorian  calendar at different times; for example, it
was adopted in the British Empire (including its American colonies) only in
September 1752.   (This, by the  way, is the  date assumed by  the COHERENT
command cal, as  you would see if you typed  the command cal 9 1752.) Users
in northern  and eastern Europe,  and in European-influenced  areas of Asia
(e.g.,  India)  may  wish  to  to  write their  own  functions  to  convert
historical data properly from the Julian to the Gregorian calendar.

Example

For an example of some time functions, see the entry for asctime().

See Also

cal,
libc,
libmisc

Notes

COHERENT also  includes the system call ftime(),  which returns the current
system time.  Because the ANSI Standard eliminates ftime(), users are urged
to replace this system call with calls to time().

UNIX System  V defines time_t  in header file  <sys/types.h>, whereas
COHERENT  defines it  in  time.h. This  should  not affect  the porting  of
programs from UNIX  to COHERENT, but it may affect  the porting of programs
in the other direction.