最終更新日時(UTC):
が更新

履歴 編集

type-alias
<ctime>

std::time_t

namespace std {
  using time_t = implementation-defined;
}

概要

time_tは、1970年1月1日からの経過時間 (UNIX時間と呼ばれる) を表すための、算術型の別名である。

  • C++11 (C99) まで、この型は整数型の別名
  • C++14 (C11) 以降、この型は整数型もしくは浮動小数点数型の別名

この型の分解能と値の範囲は実装定義

備考

  • 値の範囲が実装定義であるため、策定当時の標準ライブラリ実装では32ビット符号付き整数型の別名として定義されていた。しかし32ビットでは秒単位で扱った場合に、西暦2038年1月19日にオーバーフローしてしまうことが判明した。そのため、現在多くの実装では64ビット符号付き整数型の別名として定義される。64ビットで秒単位の場合は西暦3000億年まで扱えるため、オーバーフローの問題は気にしなくてよいだろう
  • Cの規格として、time_tはreal typeであると定義される。Cでのreal typeは、整数型と浮動小数点型の総称である
    • C++にそのような型の分類はない

#include <ctime>
#include <iostream>

int main()
{
  // ビット数を確認
  std::cout << sizeof(std::time_t) * 8 << std::endl;

  // 現在日時を取得 (1970年1月1日からの経過秒)
  std::time_t now = std::time(nullptr);

  // 現在日時を文字列に変換して出力
  std::cout << std::ctime(&now) << std::endl;
}

出力例

64
Fri Dec 20 16:21:01 2019

参照