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 *
       asctime(const struct tm *tm);

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

       char *
       ctime(const time_t *clock);

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

       double
       difftime(time_t time1, time_t time0);

       struct tm *
       gmtime(const time_t *clock);

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

       struct tm *
       localtime(const time_t *clock);

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

       time_t
       mktime(struct tm	*tm);

       time_t
       timegm(struct tm	*tm);

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

       The localtime() function	converts the time value	pointed	to  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 (see	tzset(3)).  When the specified time translates
       to a year that will not fit in an int, localtime() returns  NULL.   The
       localtime() function uses tzset(3) to initialize	time conversion	infor-
       mation if tzset(3) has not already been called by the process.

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

       The  gmtime()  function	similarly converts the time value, but without
       any time	zone adjustment, and returns a pointer to a struct tm.

       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 asctime() function converts the broken down time in the  struct  tm
       pointed to by tm	to the form shown in the example above.

       The  ctime_r() and asctime_r() functions	provide	the same functionality
       as ctime() and asctime()	except the  caller  must  provide  the	output
       buffer buf, which must be at least 26 characters	long, to store the re-
       sult  in.   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 functions mktime() and timegm() convert the broken-down time	in the
       struct  tm 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))
       while  the  timegm()  function interprets the input structure as	repre-
       senting 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
       guess  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 and sets errno(3) to an appropriate value.

       Note that -1 is a valid result (representing one	second before midnight
       UTC on the evening of 31	December 1969),	so this	cannot be relied  upon
       to  indicate  success  or  failure;  instead,  tm_wday and / or tm_yday
       should be set to	an out-of-bounds value	(e.g.  -1)  prior  to  calling
       mktime()	or timegm() and	checked	after the call.

       The  difftime()	function returns the difference	in seconds between two
       time values, time1 - time0.

       External	declarations as	well as	the definition of struct tm are	in the
       <time.h>	header.	 The tm	structure  includes  at	 least	the  following
       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 tm_isdst field is non-zero if summer	time is	in effect.

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

SEE ALSO
       date(1),	  clock_gettime(2),   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.

       The  functions  asctime(),  gmtime(), and localtime() first appeared in
       Version 5 AT&T  UNIX,  difftime()  and  mktime()	 in  4.3BSD-Reno,  and
       timegm()	and timelocal()	in SunOS 4.0.

       The asctime_r(),	ctime_r(), gmtime_r() and localtime_r()	functions have
       been available since FreeBSD 8.0.

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

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

FreeBSD	13.2			March 26, 2024			      CTIME(3)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | SEE ALSO | STANDARDS | HISTORY | BUGS

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

home | help