Defined in header <time.h>
struct tm;

Structure holding a calendar date and time broken down into its components.

Member objects

int tm_sec
seconds after the minute – [0, 61] (until C99)[0, 60] (since C99)[note 1]
(public member object)
int tm_min
minutes after the hour – [0, 59]
(public member object)
int tm_hour
hours since midnight – [0, 23]
(public member object)
int tm_mday
day of the month – [1, 31]
(public member object)
int tm_mon
months since January – [0, 11]
(public member object)
int tm_year
years since 1900
(public member object)
int tm_wday
days since Sunday – [0, 6]
(public member object)
int tm_yday
days since January 1 – [0, 365]
(public member object)
int tm_isdst
Daylight Saving Time flag. The value is positive if DST is in effect, zero if not and negative if no information is available
(public member object)

The Standard mandates only the presence of the aforementioned members in either order. The implementations usually add more data-members to this structure.

  1. Range allows for a positive leap second. Two leap seconds in the same minute are not allowed (the C89 range 0..61 was a defect)


#include <stdio.h>
#include <time.h>
int main(void)
    struct tm start = {.tm_year=2022-1900, .tm_mday=1};
    printf("%s", asctime(&start));


Sat Jan  1 00:00:00 2022


  • C17 standard (ISO/IEC 9899:2018):
    • 7.27.1/3 Components of time (p: 284)
  • C11 standard (ISO/IEC 9899:2011):
    • 7.27.1/3 Components of time (p: 388)
  • C99 standard (ISO/IEC 9899:1999):
    • 7.23.1/3 Components of time (p: 338)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • 4.12.1 Components of time

See also

converts time since epoch to calendar time expressed as local time
converts time since epoch to calendar time expressed as Coordinated Universal Time (UTC)
C++ documentation for tm

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.