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 is 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.

       The ctime_r() function provides the same	functionality as  ctime()  ex-
       cept the	caller must provide the	output buffer buf to store the result,
       which  must  be	at  least  26  characters long.	 The localtime_r() and
       gmtime_r() functions 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.

       The asctime_r() function	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).   The  mktime()  function	interprets  the	 input
       structure  according  to	 the  current timezone setting (see tzset(3)).
       The timegm() function interprets	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.	 The mktime() function returns
       the specified calendar time; if the  calendar  time  cannot  be	repre-
       sented, it returns -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 leave	their result in	an internal static ob-
       ject 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	12.1			January	2, 1999			      CTIME(3)

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

home | help