ctime(3)
NAME
ctime, localtime, gmtime, asctime, timezone, tzset − convert date and time to string
SYNTAX
As shown, the ctime, localtime, gmtime, and asctime calls are common to both the non-System V environment and the System V environment. The timezone call is unique to the non-System V environment, and the tzset call is unique to the System V environment.
Common to Both Environments
#include <time.h>
char ∗ctime (clock)
long ∗clock;
struct tm ∗localtime (clock)
long ∗clock;
struct tm ∗gmtime (clock)
long ∗clock;
char ∗asctime (tm)
struct tm ∗tm;
Non-System V Environment Only
char *timezone(zone, dst)
System V Environment Only
extern long timezone;
extern int daylight;
extern char ∗tzname[2];
void tzset ( )
DESCRIPTION
The ctime call converts a long integer, pointed to by clock, representing the time in seconds since 00:00:00 GMT, January 1, 1970, and returns a pointer to a 26-character string in the following form. All the fields have constant width.
Sun Sep 16 01:03:52 1985\n\0
The localtime and gmtime calls return pointers to “tm” structures, described below. The localtime call corrects for the time zone and possible Daylight Savings Time; gmtime converts directly to Greenwich Mean Time (GMT), which is the time the ULTRIX system uses.
The asctime call converts a “tm” structure to a 26-character string, as shown in the above example, and returns a pointer to the string.
Declarations of all the functions and externals, and the “tm” structure, are in the <time.h> header file. The structure declaration is:
struct tm {
int tm_sec; /∗ seconds (0 - 59) ∗/
int tm_min; /∗ minutes (0 - 59) ∗/
int tm_hour; /∗ hours (0 - 23) ∗/
int tm_mday; /∗ day of month (1 - 31) ∗/
int tm_mon; /∗ month of year (0 - 11) ∗/
int tm_year; /∗ year − 1900 ∗/
int tm_wday; /∗ day of week (Sunday = 0) ∗/
int tm_yday; /∗ day of year (0 - 365) ∗/
int tm_isdst;
};
The field tm_isdst is nonzero if Daylight Savings Time is in effect.
Non-System V Environment Only
The timezone call returns the name of the time zone associated with its first argument, which is measured in minutes westward from Greenwich. If the second argument is 0, the standard name is used. Otherwise, the Daylight Savings Time version is used. If the required name does not appear in a table built into the routine, the difference from GMT is produced. For example, in Afghanistan,
timezone(-(60*4+30), 0)
is appropriate because it is 4:30 ahead of GMT and the string GMT+4:30 is produced.
System V Environment Only
The external long variable timezone contains the difference, in seconds, between GMT and local standard time (in EST, timezone is 5∗60∗60). The external variable daylight is nonzero if and only if the standard USA Daylight Savings Time conversion should be applied. The program knows about the peculiarities of this conversion in 1974 and 1975; if necessary, a table for these years can be extended.
If an environment variable named TZ is present, asctime uses the contents of the variable to override the default time zone. The value of TZ must be a three-letter time zone name, followed by a number representing the difference between local time and Greenwich Mean Time in hours, followed by an optional three-letter name for a time zone on Daylight Savings Time. For example, the setting for New Jersey would be EST5EDT. The effects of setting TZ are thus to change the values of the external variables timezone and daylight; in addition, the time zone names contained in the external variable
char *tzname[2] = { "EST", "EDT" };
are set from the environment variable TZ. The function tzset sets these external variables from TZ; tzset is called by asctime and may also be called explicitly by the user.
RESTRICTIONS
The return values point to static data whose content is overwritten by each call.
SEE ALSO
getenv(3), time(3), environ(7)
Subroutines