Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CTIME(3)		    Library Functions Manual		      CTIME(3)

NAME
       asctime,	  asctime_r,   ctime,  ctime_r,	 difftime,  gmtime,  gmtime_r,
       localtime, localtime_r, mktime, timegm --  transform  binary  date  and
       time values

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<time.h>

       extern char *tzname[2];

       char *
       ctime(const time_t *clock);

       double
       difftime(time_t time1, time_t time0);

       char *
       asctime(const struct tm *tm);

       struct tm *
       localtime(const time_t *clock);

       struct tm *
       gmtime(const time_t *clock);

       time_t
       mktime(struct tm	*tm);

       time_t
       timegm(struct tm	*tm);

       char *
       ctime_r(const time_t *clock, char *buf);

       struct tm *
       localtime_r(const time_t	*clock,	struct tm *result);

       struct tm *
       gmtime_r(const time_t *clock, struct tm *result);

       char *
       asctime_r(const struct tm *tm, char *buf);

DESCRIPTION
       The functions ctime(), gmtime() and localtime() all take	as an argument
       a time value representing the time in seconds since the Epoch (00:00:00
       UTC, January 1, 1970; see time(3)).

       The  function  localtime() converts the time value pointed at by	clock,
       and returns a pointer to	a "struct tm" (described below)	which contains
       the broken-out time information for the value after adjusting  for  the
       current time zone (and any other	factors	such as	Daylight Saving	Time).
       Time  zone adjustments are performed as specified by the	TZ environment
       variable	(see tzset(3)).	 The function  localtime()  uses  tzset(3)  to
       initialize time conversion information if tzset(3) has not already been
       called by the process.

       After filling in	the tm structure, localtime() sets the tm_isdst'th el-
       ement  of  tzname  to a pointer to an ASCII string that's the time zone
       abbreviation to be used with localtime()'s return value.

       The function gmtime() similarly converts	the time  value,  but  without
       any  time zone adjustment, and returns a	pointer	to a tm	structure (de-
       scribed below).

       The ctime() function adjusts the	time value for the current  time  zone
       in  the same manner as localtime(), and returns a pointer to a 26-char-
       acter string of the form:

	     Thu Nov 24	18:22:48 1986\n\0

       All the fields have constant width.

       ctime_r() provides the same functionality as ctime() except the	caller
       must  provide  the output buffer	buf to store the result, which must be
       at least	26 characters long.  localtime_r() and gmtime_r() provide  the
       same functionality as localtime() and gmtime() respectively, except the
       caller must provide the output buffer result.

       The  asctime()  function	converts the broken down time in the structure
       tm pointed at by	*tm to the form	shown in the example above.

       asctime_r() provides the	same functionality  as	asctime()  except  the
       caller provide the output buffer	buf to store the result, which must be
       at least	26 characters long.

       The functions mktime() and timegm() convert the broken-down time	in the
       structure  pointed to by	tm into	a time value with the same encoding as
       that of the values returned by the time(3) function (that  is,  seconds
       from  the Epoch,	UTC).  mktime()	interprets the input structure accord-
       ing to the current timezone setting (see	 tzset(3)).   timegm()	inter-
       prets  the  input  structure as representing Universal Coordinated Time
       (UTC).

       The original values of the tm_wday and tm_yday components of the	struc-
       ture are	ignored, and the original values of the	other  components  are
       not  restricted	to  their  normal  ranges,  and	 will be normalized if
       needed.	For example, October 40	is changed into	November 9, a  tm_hour
       of  -1 means 1 hour before midnight, tm_mday of 0 means the day preced-
       ing the current month, and tm_mon of -2 means 2 months  before  January
       of  tm_year.  (A	positive or zero value for tm_isdst causes mktime() to
       presume initially that summer time (for example,	Daylight Saving	 Time)
       is  or  is not in effect	for the	specified time,	respectively.  A nega-
       tive value for tm_isdst causes the mktime() function to attempt to  di-
       vine  whether  summer  time  is	in effect for the specified time.  The
       tm_isdst	and tm_gmtoff members are forced to zero by timegm().)

       On successful completion, the values of the tm_wday and tm_yday	compo-
       nents  of the structure are set appropriately, and the other components
       are set to represent the	specified calendar time, but with their	values
       forced to their normal ranges; the final	value of tm_mday  is  not  set
       until  tm_mon  and tm_year are determined.  Mktime() returns the	speci-
       fied calendar time; if the calendar time	cannot be represented, it  re-
       turns -1;

       The  difftime()	function  returns  the difference between two calendar
       times, (time1 - time0), expressed in seconds.

       External	declarations as	well as	the tm structure definition are	in the
       <time.h>	include	file.  The tm structure	includes at least the  follow-
       ing fields:

	     int tm_sec;     /*	seconds	(0 - 60) */
	     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;   /*	is summer time in effect? */
	     char *tm_zone;  /*	abbreviation of	timezone name */
	     long tm_gmtoff; /*	offset from UTC	in seconds */

       The field tm_isdst is non-zero if summer	time is	in effect.

       The  field tm_gmtoff is the offset (in seconds) of the time represented
       from UTC, with positive values indicating east of the Prime Meridian.

SEE ALSO
       date(1),	gettimeofday(2), getenv(3), time(3), tzset(3), tzfile(5)

STANDARDS
       The asctime(), ctime(), difftime(), gmtime(), localtime(), and mktime()
       functions conform to ISO/IEC 9899:1990  ("ISO  C90"),  and  conform  to
       ISO/IEC	9945-1:1996  ("POSIX.1")  provided the selected	local timezone
       does not	contain	a leap-second table (see zic(8)).

       The asctime_r(),	ctime_r(), gmtime_r(), and localtime_r() functions are
       expected	to conform to ISO/IEC 9945-1:1996 ("POSIX.1") (again  provided
       the selected local timezone does	not contain a leap-second table).

       The  timegm()  function	is not specified by any	standard; its function
       cannot be completely emulated using the	standard  functions  described
       above.

HISTORY
       This manual page	is derived from	the time package contributed to	Berke-
       ley by Arthur Olson and which appeared in 4.3BSD.

BUGS
       Except  for  difftime(),	 mktime(),  and	the _r() variants of the other
       functions, these	functions leaves their result in  an  internal	static
       object  and return a pointer to that object.  Subsequent	calls to these
       function	will modify the	same object.

       The C Standard provides no mechanism for	a program to modify  its  cur-
       rent local timezone setting, and	the POSIX-standard method is not reen-
       trant.  (However, thread-safe implementations are provided in the POSIX
       threaded	environment.)

       The  tm_zone  field of a	returned tm structure points to	a static array
       of characters, which will also be overwritten by	any  subsequent	 calls
       (as well	as by subsequent calls to tzset(3) and tzsetwall(3)).

       Use  of	the external variable tzname is	discouraged; the tm_zone entry
       in the tm structure is preferred.

FreeBSD	5.0			January	2, 1999			      CTIME(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ctime&sektion=3&manpath=FreeBSD+5.0-RELEASE>

home | help