CTIME(3)

NAME
ctime, localtime, gmtime, asctime, timezone - convert date and time to ASCII

SYNOPSIS
char *ctime(clock)
long *clock;

#include <time.h>

struct tm *localtime(clock)
long *clock;

struct tm *gmtime(clock)
long *clock;

char *asctime(tm)
struct tm *tm;

char *timezone(zone, dst)

int dysize(year)

DESCRIPTION
Ctime converts a time pointed to by clock such as returned by time(3) into ASCII 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 1973\n\0

Localtime and gmtime return pointers to structures containing the broken-down time. Localtime corrects for the time zone and possible daylight savings time; gmtime converts directly to GMT, which is the time UNIX uses. Asctime converts a broken-down time to ASCII and returns a pointer to a 26-character string.

The structure declaration from the include file is:

    struct tm {
    	int tm_sec;	/* 0-59	seconds */
    	int tm_min;	/* 0-59	minutes */
    	int tm_hour;	/* 0-23	hour */
    	int tm_mday;	/* 1-31	day of month */
    	int tm_mon;	/* 0-11	month */
    	int tm_year;	/* 0-	year - 1900 */
    	int tm_wday;	/* 0-6	day of week (Sunday = 0) */
    	int tm_yday;	/* 0-365	day of year */
    	int tm_isdst;	/* flag:	daylight savings time in effect */
    };

When local time is called for, the program consults the system to determine the time zone and whether the U.S.A., Australian, Eastern European, Middle European, or Western European daylight saving time adjustment is appropriate. The program knows about various peculiarities in time conversion over the past 10-20 years; if necessary, this understanding can be extended.

Timezone 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 Saving version. If the required name does not appear in a table built into the routine, the difference from GMT is produced; e.g., 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.

Dysize returns the number of days in the given year for any year in the range 1901-2099.

SEE ALSO
gettimeofday(2), time(3)

BUGS
The return values point to static data whose content is overwritten by each call.

The support for time zones outside America is rudimentary and frequently wrong. GMT is incorrectly reported as WET and vice versa. The time zone and daylight saving time information is built into the code and is thus not up to date - the implementation is incapable of dealing with the arbitrary methods used to decide daylight saving time in many countries.

Recognition of leap years is only fortuitously correct over the range of possible time values. The size of the long data type is such that UNIX can only deal with dates about 90 years either side of 1970. Attemping to use dates outside this range will have unpredictable results.