|  | .TH CTIME 3 | 
|  | .SH NAME | 
|  | ctime, localtime, gmtime, asctime, tm2sec, timezone \- convert date and time | 
|  | .SH SYNOPSIS | 
|  | .B #include <u.h> | 
|  | .br | 
|  | .B #include <libc.h> | 
|  | .PP | 
|  | .ta \w'\fLchar* 'u | 
|  | .B | 
|  | char*	ctime(long clock) | 
|  | .PP | 
|  | .B | 
|  | Tm*	localtime(long clock) | 
|  | .PP | 
|  | .B | 
|  | Tm*	gmtime(long clock) | 
|  | .PP | 
|  | .B | 
|  | char*	asctime(Tm *tm) | 
|  | .PP | 
|  | .B | 
|  | long	tm2sec(Tm *tm) | 
|  | .SH DESCRIPTION | 
|  | .I Ctime | 
|  | converts a time | 
|  | .I clock | 
|  | such as returned by | 
|  | .IR time (3) | 
|  | into | 
|  | .SM ASCII | 
|  | (sic) | 
|  | and returns a pointer to a | 
|  | 30-byte string | 
|  | in the following form. | 
|  | All the fields have constant width. | 
|  | .PP | 
|  | .B | 
|  | Wed Aug  5 01:07:47 EST 1973\en\e0 | 
|  | .PP | 
|  | .I Localtime | 
|  | and | 
|  | .I gmtime | 
|  | return pointers to structures containing | 
|  | the broken-down time. | 
|  | .I Localtime | 
|  | corrects for the time zone and possible daylight savings time; | 
|  | .I gmtime | 
|  | converts directly to GMT. | 
|  | .I Asctime | 
|  | converts a broken-down time to | 
|  | .SM ASCII | 
|  | and returns a pointer | 
|  | to a 30-byte string. | 
|  | .IP | 
|  | .EX | 
|  | .ta 6n +\w'char 'u +\w'zone[4];    'u | 
|  | typedef | 
|  | struct { | 
|  | int	sec;	/* seconds (range 0..59) */ | 
|  | int	min;	/* minutes (0..59) */ | 
|  | int	hour;	/* hours (0..23) */ | 
|  | int	mday;	/* day of the month (1..31) */ | 
|  | int	mon;	/* month of the year (0..11) */ | 
|  | int	year;	/* year A.D. \- 1900 */ | 
|  | int	wday;	/* day of week (0..6, Sunday = 0) */ | 
|  | int	yday;	/* day of year (0..365) */ | 
|  | char	zone[4];	/* time zone name */ | 
|  | int	tzoff;	/* time zone delta from GMT */ | 
|  | } Tm; | 
|  | .EE | 
|  | .PP | 
|  | .I Tm2sec | 
|  | converts a broken-down time to | 
|  | seconds since the start of the epoch. | 
|  | It ignores | 
|  | .BR wday , | 
|  | and assumes the local time zone | 
|  | if | 
|  | .B zone | 
|  | is not | 
|  | .BR GMT . | 
|  | .SH SOURCE | 
|  | .B \*9/src/lib9/date.c | 
|  | .br | 
|  | .B \*9/src/lib9/ctime.c | 
|  | .SH "SEE ALSO" | 
|  | .IR date (1), | 
|  | .IR time (3) | 
|  | .SH BUGS | 
|  | The return values point to static data | 
|  | whose content is overwritten by each call. | 
|  | .PP | 
|  | Daylight Savings Time is ``normal'' in the Southern hemisphere. | 
|  | .PP | 
|  | These routines are not equipped to handle non-\c | 
|  | .SM ASCII | 
|  | text, and are provincial anyway. | 
|  | .PP | 
|  | To avoid name conflicts with the underlying system, | 
|  | .IR ctime , | 
|  | .IR localtime , | 
|  | .IR gmtime , | 
|  | .IR asctime , | 
|  | and | 
|  | .I tm2sec | 
|  | are preprocessor macros defined as | 
|  | .IR p9ctime , | 
|  | .IR p9localtime , | 
|  | .IR p9gmtime , | 
|  | .IR p9asctime , | 
|  | and | 
|  | .IR p9tm2sec ; | 
|  | see | 
|  | .IR intro (3). |