std::tm(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

✨ NAME ✨

std::tm β€” std::tm (yes bestie, that's the whole name, no cap). This is the std::tm(3) page from the C++ Standard Libary, and it's all about std::tm: a structure holding a calendar date and time broken down into its components. πŸ’–


🌸 Synopsis 🌸

Defined in header <ctime>
struct tm;

Structure holding a calendar date and time broken down into its components. πŸ¦‹


🫢 Member objects 🫢

  • int tm_sec β€” seconds after the minute. Range: [0, 61] (until C++11), then [0, 60] (since C++11)^[note 1]. (public member object)
  • int tm_min β€” minutes after the hour. Range: [0, 59]. (public member object)
  • int tm_hour β€” hours since midnight. Range: [0, 23]. (public member object)
  • int tm_mday β€” day of the month. Range: [1, 31]. (public member object)
  • int tm_mon β€” months since January. Range: [0, 11]. (public member object)
  • int tm_year β€” years since 1900. (public member object)
  • int tm_wday β€” days since Sunday. Range: [0, 6]. (public member object)
  • int tm_yday β€” days since January 1. Range: [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)

πŸ’… Notes πŸ’…

The Standard mandates only the presence of the aforementioned members in some 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 range [0, 61] was a defect introduced in C89 and corrected in C99).

✨ Example ✨

This is the code, bestie β€” run it if you want the vibe check:

// Run this code

#include <ctime>
#include <iostream>

int main()
{
    std::tm tm{};
    tm.tm_year = 2022 - 1900;
    tm.tm_mday = 1;
    std::mktime(&tm);

    std::cout << std::asctime(&tm); // note implicit trailing '\n'

    std::cout << "sizeof(std::tm) = " << sizeof(std::tm) << '\n'
              << "sum of sizes of standard members = "
              << sizeof(tm.tm_sec) +
                 sizeof(tm.tm_min) +
                 sizeof(tm.tm_hour) +
                 sizeof(tm.tm_mday) +
                 sizeof(tm.tm_mon) +
                 sizeof(tm.tm_year) +
                 sizeof(tm.tm_wday) +
                 sizeof(tm.tm_yday) +
                 sizeof(tm.tm_isdst) << '\n';
}

πŸ”₯ Possible output πŸ”₯

Like, maybe your machine prints this exactly:

Sat Jan  1 00:00:00 2022
sizeof(std::tm) = 56
sum of sizes of standard members = 36

πŸ‘‘ See also πŸ‘‘

  • localtime β€” converts time since epoch to calendar time expressed as local time. (function)
  • gmtime β€” converts time since epoch to calendar time expressed as Universal Coordinated Time. (function)
  • C documentation for tm β€” the C-side twin, iykyk. 😌

✨ okay that's the page! source/version: http://cppreference.com; date: 2024.06.10; manual page: std::tm(3). slay and goodbye πŸ’–πŸ’…πŸŽ€

πŸ“¦ where this page comes from