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, offtime, offtime_r, 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);

     struct tm *
     offtime(const time_t *clock, long offset);

     struct tm *
     offtime_r(const time_t *clock, long offset, struct tm *result);

     time_t
     timegm(struct tm *tm);

DESCRIPTION
     The ctime(), gmtime(), localtime(), and offtime() functions all take as ar-
     gument 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  bro-
     ken-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 information if tzset(3) has not
     already been called by the process.

     After filling in the struct tm, localtime() sets the tm_isdst'th element 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 offtime() function similarly converts the time value with a  time  zone
     adjustment corresponding to the provided offset, which is expressed in sec-
     onds, with positive values indicating a time zone ahead of UTC (east of the
     Prime Meridian).  It does not call tzset(3) or modify tzname.

     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-character
     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 result in.  The lo-
     caltime_r(),  gmtime_r(),	and offtime_r() functions provide the same func-
     tionality as localtime(), gmtime(), and offtime() 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 accord-
     ing to the current timezone setting (see tzset(3)) while the timegm() func-
     tion interprets the input structure as representing  Universal  Coordinated
     Time (UTC).

     The  original values of the tm_wday and tm_yday components of the structure
     are ignored, and the original values of the other components  are	not  re-
     stricted to their normal ranges, and will be normalized if needed.  For ex-
     ample,  October 40 is changed into November 9, a tm_hour of -1 means 1 hour
     before midnight, tm_mday of 0 means the day preceding  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 negative value for tm_isdst causes the mk-
     time() 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  components
     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 calen-
     dar time; if the calendar time cannot be represented,  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 indi-
     cate 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 con-
     tain a leap-second table (see zic(8)).

     The asctime_r(), ctime_r(), gmtime_r(), and localtime_r() functions are ex-
     pected 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  expected  to  conform  to  ISO/IEC  9899:2024
     ("ISO C23") with the same constraint.

HISTORY
     This manual page is derived from the time package contributed  to	Berkeley
     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.	The offtime() and offtime_r()  functions
     were added in FreeBSD 15.0.

BUGS
     Except  for  difftime(), mktime(), and the _r() variants of the other func-
     tions, these functions leave 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  current
     local  timezone  setting,	and  the POSIX-standard method is not reentrant.
     (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 ports 15.1		  May 14, 2026				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+15.1-RELEASE+and+Ports>

home | help