tm(3type) — Linux manual page

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | VERSIONS | STANDARDS | HISTORY | NOTES | SEE ALSO | COLOPHON

tm(3type)                                                      tm(3type)

NAME         top

       tm - broken-down time

LIBRARY         top

       Standard C library (libc)

SYNOPSIS         top

       #include <time.h>

       struct tm {
           int         tm_sec;    /* Seconds          [0, 60] */
           int         tm_min;    /* Minutes          [0, 59] */
           int         tm_hour;   /* Hour             [0, 23] */
           int         tm_mday;   /* Day of the month [1, 31] */
           int         tm_mon;    /* Month            [0, 11]  (January = 0) */
           int         tm_year;   /* Year minus 1900 */
           int         tm_wday;   /* Day of the week  [0, 6]   (Sunday = 0) */
           int         tm_yday;   /* Day of the year  [0, 365] (Jan/01 = 0) */
           int         tm_isdst;  /* Daylight savings flag */

           long        tm_gmtoff; /* Seconds East of UTC */
           const char *tm_zone;   /* Timezone abbreviation */
       };

   Feature Test Macro Requirements for glibc (see
   feature_test_macros(7)):

       tm_gmtoff, tm_zone:
           Since glibc 2.20:
               _DEFAULT_SOURCE
           glibc 2.20 and earlier:
               _BSD_SOURCE

DESCRIPTION         top

       Describes time, broken down into distinct components.

       tm_isdst describes whether daylight saving time is in effect at
       the time described.  The value is positive if daylight saving
       time is in effect, zero if it is not, and negative if the
       information is not available.

       tm_gmtoff is the difference, in seconds, of the timezone
       represented by this broken-down time and UTC (this is the
       additive inverse of timezone(3)).

       tm_zone is the equivalent of tzname(3) for the timezone
       represented by this broken-down time.

VERSIONS         top

       In C90, tm_sec could represent values in the range [0, 61], which
       could represent a double leap second.  UTC doesn't permit double
       leap seconds, so it was limited to 60 in C99.

       timezone(3), as a variable, is an XSI extension: some systems
       provide the V7-compatible timezone(3) function.  The tm_gmtoff
       field provides an alternative (with the opposite sign) for those
       systems.

       tm_zone points to static storage and may be overridden on
       subsequent calls to localtime(3) and similar functions (however,
       this never happens under glibc).

STANDARDS         top

       C23, POSIX.1-2024.

HISTORY         top

       C89, POSIX.1-1988.

       tm_gmtoff and tm_zone originate from 4.3BSD-Tahoe (where tm_zone
       is a char *), and were first standardized in POSIX.1-2024.

NOTES         top

       tm_sec can represent a leap second with the value 60.

SEE ALSO         top

       ctime(3), strftime(3), strptime(3), time(7)

COLOPHON         top

       This page is part of the man-pages (Linux kernel and C library
       user-space interface documentation) project.  Information about
       the project can be found at 
       ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report
       for this manual page, see
       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.
       This page was obtained from the tarball man-pages-6.9.1.tar.gz
       fetched from
       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on
       2024-06-26.  If you discover any rendering problems in this HTML
       version of the page, or you believe there is a better or more up-
       to-date source for the page, or you have corrections or
       improvements to the information in this COLOPHON (which is not
       part of the original manual page), send a mail to
       man-pages@man7.org

Linux man-pages 6.9.1          2024-06-12                      tm(3type)

Pages that refer to this page: ctime(3)strptime(3)tzset(3)time(7)